Форум программистов, компьютерный форум CyberForum.ru

Разработать программу для работы с двунаправленным связными списками. - C++

Восстановить пароль Регистрация
Другие темы раздела
C++ Значение по-умолчанию для ссылки http://www.cyberforum.ru/cpp-beginners/thread545587.html
Здравствуйте, есть такой код: void iterateTheElements(someClass &parent = someClass ()); Под MVSC все нормально работает, MinGW же на это ругается: C:\Users\ruzik\Documents\my_projects\RizekFaster\Widgets\RDataTreeView\RDataTreeView.h:19: ошибка: default argument for parameter of type 'QModelIndex&' has type 'QModelIndex' Как можно без "садо-мазо"(типа постоянного хранения пустой переменной)...
C++ Файл: Записать в файл g целые числа b1..bn по следющим условиям: b[i] = i и b[i] = 2^i +3^(i+1) Дано натуральное n. Записать в файл g целые числа b1..bn, определенные так , как в этих пунктах: а) i ; б) д) 2^i +3^(i+1) Решите на C++ пожалуйста! . http://www.cyberforum.ru/cpp-beginners/thread545581.html
C++ В массиве вычислить среднее арифметическое и вычесть его из каждого элемента массива.
Файлы. Работа с одномерными массивами Постановка задачи 1 Прочитать из файла два одномерных массива разной длины. Для каждого из них в отдельности вычислить среднее арифметическое, вычесть его из каждого элемента массива. Элементы 1-го массива: 1,2,3,4,5. Элементы 2-го массива: 6,7,8,9,10,11,12.
C++ Установить цветной текстовый режим с 40 символами по горизонтали. Создать окно 7х7 символов в левом верхнем углу экрана.
Решить нужно в Турбо-среде Borland C++ Текстовый режим Постановка задачи 1 Установить цветной текстовый режим с 40 символами по горизонтали. Создать окно 7х7 символов в левом верхнем углу экрана. Написать на красном фоне желтым цветом ( без кавычек). Переместить окно в центр экрана, занести его в память, а затем воспроизвести по незаполненным трем углам экрана.
C++ Проблемы с распараллеливанием(omp) простой программы http://www.cyberforum.ru/cpp-beginners/thread545553.html
Нужно реализовать и распараллелить простенький алгоритм: Найти минимальное число, большее заданного N, которое делится нацело на все заданные числа n1, n2, ... nk. #include <iostream> #include <ctime> #include <omp.h> #include <vector> #include <list> using namespace std; void main(){
C++ Упаковка и распаковка даты. Добрый день. Помогите найти ошибку. А она заключается в том, что число в битовом представлении в сдвиге, получаеться совсем другое, нежели в битовых полях. Также это влечёт за собой не правильную распаковку даты. Заранее спасибо!:good: Код рабочий, можно вставить и проверить у себя. #include <iostream> #include <iomanip> #include <conio.h> using namespace std; void DisplayBits(... подробнее

Показать сообщение отдельно
zitxbit
Master C/C++
 Аватар для zitxbit
86 / 738 / 75
Регистрация: 11.04.2012
Сообщений: 971
23.04.2012, 11:36     Разработать программу для работы с двунаправленным связными списками.
Вот реализация двунаправленного динамического списка на С++:
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
#include <stdio.h>
#include <stdlib.h>
 
#define N 20
 
typedef struct List
{
    int n;
    List* pPrev;
    List* pNext;
} LIST;
 
LIST* pList = NULL;
LIST* pListTail = NULL;
 
static int g_count = 0;
 
void AddHead(int value);
void AddTail(int value);
LIST*& GetAt(int index);
void InsertBefore(int index, int value);
void InsertAfter(int index, int value);
void Delete(int index);
void Sort(void);
void Display(void);
 
int _tmain(int argc, _TCHAR* argv[])
{
    for (int i = 0; i < N; i++)
        AddTail(rand() % N + 1);
 
    for (int k = 0; k < N; k++)
        AddHead(rand() % N + 1);
 
    Display(); 
    Sort(); 
    Display();
 
    return 0;
}
 
void AddHead(int value)
{
    LIST* pListItem = new LIST;
    pListItem->n = value;
    pListItem->pPrev = NULL;
    pListItem->pNext = NULL;
    if (pList != NULL) { pList->pPrev = pListItem; 
        pListItem->pNext = pList; pList = pListItem; }
    else { pListTail = pListItem; pList = pListTail; }
 
    g_count++;
}
 
void AddTail(int value)
{
    LIST* pListItem = new LIST;
    pListItem->n = value;
    pListItem->pNext = NULL;
    if (pList != NULL) { pListItem->pPrev = pListTail; 
        pListTail->pNext = pListItem; pListTail = pListItem; }
    else { pListItem->pPrev = NULL; pList = pListItem; pListTail = pList; }
 
    g_count++;
}
 
LIST*& GetAt(int index)
{
    LIST* pListItem = NULL;
    LIST* pListTarget = pList;
    for (int i = 0; (pListTarget != NULL); i++)
    {
        if (i == index) pListItem = pListTarget;
        pListTarget = pListTarget->pNext;
    }
 
    return (LIST*&)pListItem;
}
 
void InsertBefore(int index, int value)
{
    LIST* pListItem = GetAt(index);
    if (pListItem != NULL)
    {
        LIST* pItem = new LIST;
        pItem->n = value;
        if (pListItem->pPrev != NULL)
        { pItem->pPrev = pListItem->pPrev; pItem->pNext = pListItem; 
          pListItem->pPrev->pNext = pItem; pListItem->pPrev = pItem; }
        else { pItem->pPrev = NULL;     pItem->pNext = pListItem; 
           pListItem->pPrev = pItem; pList = pItem; }
    }
 
    g_count++;
}
 
void InsertAfter(int index, int value)
{
    LIST* pListItem = GetAt(index);
    if (pListItem != NULL)
    {
        LIST* pItem = new LIST;
        pItem->n = value;
        if (pListItem->pNext != NULL)
        { pItem->pPrev = pListItem; pItem->pNext = pListItem->pNext;
        pListItem->pNext->pPrev = pItem; pListItem->pNext = pItem; }
        else { pItem->pPrev = pListItem; pItem->pNext = NULL; 
          pListItem->pNext = pItem; pListItem = pItem; }
    }
 
    g_count++;
}
 
void Delete(int index)
{
    LIST* pListItem = GetAt(index);
    if (pListItem != NULL)
    {
        if (pListItem->pPrev != NULL)
        {
            pListItem->pPrev->pNext = pListItem->pNext;
            if (pListItem->pNext != NULL)
                pListItem->pNext->pPrev = pListItem->pPrev;
            else pListItem->pPrev->pNext = NULL;
        }
        else { pList = pListItem->pNext; pList->pPrev = NULL; }
    }
 
    g_count--;
}
 
void Sort(void)
{
    for (int q = 0; q < g_count; q++)
     for (int k = q-1; k >= 0; k--)
      if (GetAt(k)->n > GetAt(q)->n)
          { InsertBefore(k, GetAt(q)->n);
            Delete(q+1); q--; }
}
 
void Display(void)
{
    LIST* pNode = NULL;
    for (int i = 0; (pNode = GetAt(i)) != NULL; i++)
        printf("%d ",pNode->n);
    printf("\n");
}
Деревья не знаю пока, посмотрим. Просьба говорить спасибо.
 
Текущее время: 23:02. Часовой пояс GMT +3.
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2016, vBulletin Solutions, Inc.
Рейтинг@Mail.ru