Форум программистов, компьютерный форум, киберфорум
С++ для начинающих
Войти
Регистрация
Восстановить пароль
Карта форума Темы раздела Блоги Сообщество Поиск Заказать работу  
Другие темы раздела
C++ Генерация случайных чисел https://www.cyberforum.ru/ cpp-beginners/ thread979401.html
Написать программу, которая должна обеспечить исчисление количества повторений заданного числа по модулю 100. Характеристика должна быть исчислена 10 раз подряд и каждый результат следует вывести на консоль. Длину последовательности случайных чисел должен задавать пользователь. Напишите хоть по пунктам как делать?
Односвязный кольцевой список 64-битовых строк C++
Довольно долго мучаюсь с этим заданием: Вид списка: односвязный кольцевой список Элемент списка: 64-битовая строка. Строка должна быть представлена в виде двух полей unsigned long. Операции над списком: — вставка элемента в начало\конец списка — получение значения элемента по индексу — удаление элемента по индексу — очистка всех элементов списка — подсчет количества...
C++ Ввести три числа. Если они могут быть длинами сторон равнобедренного треугольника, вычислить длины его высот. Вывести длину основания и длины высот в помогите решить: Ввести три числа. Если они могут быть длинами сторон равнобедренного треугольника, вычислить длины его высот. Вывести длину основания и длины высот в порядке возрастания. https://www.cyberforum.ru/ cpp-beginners/ thread979396.html C++ Добавить К столбцов в начало матрицы https://www.cyberforum.ru/ cpp-beginners/ thread979393.html
Нужно добавить К столбцов в начало матрицы, сделан вывод матрицы и добавление строки но не знаю как переделать так что бы теперь добавлялся столбец. #include <iostream> #include <stdlib.h> #include <conio.h> int main() { int k,i,t,r,n,m,j;
C++ Одномерный массив
1. В одномерном массиве, состоящем из n вещественных элементов, вычислить: a) минимальный из положительных элементов, его порядковый номер; b) сумму элементов массива, расположенных до последнего положительного элемента.
C++ Написать программу для вычисления суммы https://www.cyberforum.ru/ cpp-beginners/ thread979369.html
1)Написать программу для вычисления суммы S=1+1*2+1*2*4+1*2*4*6+...+1*2*...*n
C++ Обработка данных в виде массива структур https://www.cyberforum.ru/ cpp-beginners/ thread979359.html
Несколько дней пытаюсь разобраться, пока результаты не радуют.. Очень прошу, помогите Программа представляет собой простейшую систему для управления данными. Исходные данные хранятся в текстовом файле в виде строк. Необходимо сконструировать структуру и на ее основе создать массив в динамической памяти. Действия, выполняемые программой: Чтение данных из файла в динамический массив...
C++ Какова структура образа экрана getimage
Здравствуйте! Я получаю фрагмент образа экрана функцией getimage(x1,y1,x2,y2,buf) из библиотеки graphics.h Какова структура этого образа? (нужна для дальнейшей обработки) Например: если экран находится в 16-ти цветном режиме, то образ фрагмента 15х15 в целых со знаком (всего 124) таков: 15, 0, 15, 0, 1, 0, 1, 0, 1, 0, 1, 0, 1, 0, ...
C++ Дан целочисленный массив размера N. Удалить из массива все одина- ?ковые элементы, оставив их первые вхождения Всем привет у меня тут проблемка, может кто подскажет ?Дан целочисленный массив размера N. Удалить из массива все одина- ?ковые элементы, оставив их первые вхождения https://www.cyberforum.ru/ cpp-beginners/ thread979354.html C++ Как добавить заголовочный файл? помогите, я недавно решил научится программировать, и скачал пример кода одной игры, но в нём используются файлы которые вызываются с помощью #include <blablabla.h> или #include blablabla.h, вообщем в архиве было ещё 3 таких файла, они вызываются в начале кода программы, вопрос возможно глупый, но я просто только вчера начал учится программировать, и я использую codeblocks, очень нужна помощь, и... https://www.cyberforum.ru/ cpp-beginners/ thread979312.html
C++ изменение ptivat static
#include <iostream> using namespace std; #include <string> using std::string; class ext { public: ext( )
C++ Сортировка бинарного файла Здравствуйте. Возникла проблема при сортировке бинарного файла, в котором хранятся записи. Долго пытался работать с массивом этих записей, но ничего не получалось. Решил разделить запись на 3 массива (по полям) и отсортировать их, это удалось, но вот обратно в бинарный файл записывать отказывается, т.к. ругается на типы. По заданию нужно сначала перевести текстовый файл в бинарный (процедура... https://www.cyberforum.ru/ cpp-beginners/ thread979304.html
0 / 0 / 0
Регистрация: 17.04.2013
Сообщений: 8
0

Кольцевой односвязный список на базе адресных указателей с использованием фиктивного элемента - C++ - Ответ 5192357

16.10.2013, 21:26. Показов 2141. Ответов 0
Метки (Все метки)

Author24 — интернет-сервис помощи студентам
В плюсах полный нуб.
Что-то смог написать с помощью разных интернет ресурсов..
Это даже работает так как нужно.
НО еще нужно написать итератор, с ним возникли большие проблемы.
итератор для доступа к значениям в списке с основными операциями:
– установка на первое значение в списке,
– переход к следующему значению в списке,
– проверка состояния итератора,
– доступ по чтению и записи к текущему значению.

Вот код без итератора:
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
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
206
207
208
209
210
211
212
213
214
215
216
217
218
219
220
221
222
223
224
225
226
227
228
229
230
231
232
233
234
235
236
237
238
239
240
241
242
243
244
245
246
247
248
249
250
251
252
253
254
255
256
257
258
259
260
261
262
263
264
265
266
267
268
269
270
271
272
273
274
275
276
277
278
279
280
281
282
283
284
285
286
287
288
289
290
291
292
293
294
295
296
297
298
299
300
301
302
303
304
305
306
307
308
309
310
311
312
313
314
315
316
317
318
319
320
321
322
323
324
325
326
327
328
329
330
331
332
333
334
335
336
337
338
339
340
341
342
343
344
345
346
347
348
349
350
351
352
353
354
355
356
357
358
359
360
361
362
363
364
365
366
367
368
369
370
#include "stdafx.h"
#include <iostream>
#include <conio.h>
#include <string>
 
using namespace std;
 
 
 
//связанные структуры
 
template <class T>
 
class list
{
    
    struct elem
    {
        int first;
        int free;
        T data;
        elem *next;
        elem (){};
        elem(T d){data = d;}
    };
    elem*head;
    int size;
    public:
        list()
        {
            head = new elem; 
            head->next = head; 
            size = 0;
        }
//print all elements
    void display(){
        int n = 0;
        elem *pre=head;
         while (n<=size) //До тех пор пока не встретит пустое значение
         {
          cout<<pre->data<<" "; //Выведет элемент x из списка
          pre=pre->next; //Указываем, что далее нам нужен следующий элемент
          n++;
         }
    }
//insert by id function
    bool insert_by_id(T d, int n)
    {
        if (n>size || n<(size-size)) {
            return false;
        }
        else{
            elem* p_new = new elem;
            
            elem *pre=head;
            elem* p=head;
            elem *current=head;
            for (int i=0; i<n; i++, pre=p, p=p->next)
            {
                current = current->next;                            
            }
            p_new -> next = pre -> next;    
            pre->next = p_new;
            p_new->data = d;
            size++;
            return true;
        }
    }
//insert function
    bool insert(T d)
    {
        elem* p_new = new elem;
        int j=size;
        j++;
        elem *pre=head;
        elem* p=head;
            for (int i=0; i<j; i++, pre=p, p=p->next)
            {
                p_new -> next = pre -> next;                
            }
        pre->next = p_new;
        p_new->data = d;
        size=j;
        return true;
    }
 
    bool del_by_id(int n){
        if (n>size || n<0){return false;}
        elem *pre=head;
        elem *ptr;//вспомогательный указатель
        elem *current=head;
        for (int i = 0; i < n; i++){
            current = current->next;
        }
        if (current!=NULL){//проверка на корректность
            if (current==head){//удаляем первый элемент
                head = head->next;
                delete(current);
                current = head;
            }
            else {//удаляем непервый элемент
                ptr = head;
                while (ptr->next != current)
                    ptr = ptr->next; 
                ptr->next = current->next;
                delete(current);
                current=ptr;
            }
            size--;
            return true;
        }
    }
//delete by value
    bool del_by_val(char value){
        elem *pre=head;
        elem *ptr;//вспомогательный указатель
        elem *current=head;
        
        for (int i = 0; i < size; i++){
            current = current->next;
            if (current->data == value){
                i = size + 1;
            }
        }
        if (current->data == value){
            if (current!=NULL){//проверка на корректность
                if (current==head){//удаляем первый элемент
                    head = head->next;
                    delete(current);
                    current = head;
                }
                else {//удаляем непервый элемент
                    ptr = head;
                    while (ptr->next != current)
                        ptr = ptr->next; 
                    ptr->next = current->next;
                    delete(current);
                    current=ptr;
                }
                size--;
                return true;
            }
        }
        else{return false;}
    }
//find element by value
    int find_by_val(char value){
        string f;
        elem *pre=head;
        elem *ptr;//вспомогательный указатель
        elem *current=head;
        for (int i = 1; i < size; i++){
            current = current->next;
            if (current!=NULL){//проверка на корректность
                if (current->data==value){
                    return i;
                }
            }
        }
        return -1;
    }
//rewrite the element with index
    bool cahnge_by_index(char value, int n){
        if (n>size || n<0){return false;}
        elem *pre=head;
        elem *ptr;//вспомогательный указатель
        elem *current=head;
        for (int i = 0; i < n; i++)
            current = current->next;
            if (current!=NULL){//проверка на корректность
                current->data=value;
                return true;                                
            }
    }
//read the element with index
    string find_by_id(int n){
        string element = "nothing.";
        if (n>size || n<0){return element;}
        elem *pre=head;
        elem *ptr;//вспомогательный указатель
        elem *current=head;
        for (int i = 0; i < n; i++)
            current = current->next;
            if (current!=NULL){//проверка на корректность
                    element = current->data;
                    return element;
            }
    }
//if element with input value exist
    bool check_by_val(char value){
        
        elem *pre=head;
        elem *ptr;//вспомогательный указатель
        elem *current=head;
        for (int i = 1; i < size; i++){
            current = current->next;
            if (current!=NULL){//проверка на корректность
                if (current->data==value){
                    return true;
                    i = size+1;
                }
            }
        }
        return false;
    }
//show size
    int show_size(){
        return size;
    }
//if list is empty
    int emptiness(){
        int rez;
        if (size<=0){
            rez = 0;
        }
        else{
            rez = 1;
        }
        return rez;
    }
//clear list
    bool clear_list(){
        elem *pre=head;
        elem *ptr;//вспомогательный указатель
        elem *current=head;
        
        for (int i = 0; i < size; i++){
            current = current->next;
            
            if (current!=NULL){//проверка на корректность
                if (current==head){//удаляем первый элемент
                    head = head->next;
                    delete(current);
                    current = head;
                }
                else {//удаляем непервый элемент
                    ptr = head;
                    while (ptr->next != current)
                        ptr = ptr->next; 
                    ptr->next = current->next;
                    delete(current);
                    current=ptr;
                }
                size--;
            }
        }
        size=0;
        return true;
    }
};
 
int main()
{
    bool m = false;
    list<char>* my_list=new list<char>;
    
    cout << "\nPlease, enter command:\n1-insert element by id\n2-insert element\n3-delete element by id\n4-show elements\n5-delete element by value\n6-find element by value\n7-change element with entered index\n8-show element with entered index\n9-find if element with entered value exist\n10-show size\n11-check if list is empty\n12-clear list\n";
    while(true){    
        int pickedCommandNumber=0;
        cin >> pickedCommandNumber;
    switch(pickedCommandNumber){
    case 1:{
        cout<<"Enter index of new element:";
        int index;
        cin>>index;
        cout<<"Enter content:";
        char content;
        cin>>content;
        m = my_list->insert_by_id(content, index);
        if (m){cout<<"insert by id done.";}
        else {cout<<"insert by id failed";}
        }
    break;
    case 2:{
        cout<<"Enter content:";
        char content;
        cin>>content;
        m = my_list->insert(content);
        if (m){cout<<"insert done.";}
        else {cout<<"insert failed";}
        }
 
    break;
    case 3:{
        cout<<"Enter index:";
        int index;
        cin>>index;
        m = my_list->del_by_id(index);
        if (m){cout<<"delete by id done.";}
        else {cout<<"delete by id failed";}
        }
    break;
    case 4:{
        my_list->display();
        }
    break;
    case 5:{
        cout<<"Enter value:";
        char value;
        cin>>value;
        m = my_list->del_by_val(value);
        if (m){cout<<"delete by value done.";}
        else {cout<<"delete by value failed";}
        }
    break;
    case 6:{
        int found;
        cout<<"Enter value:";
        char value;
        cin>>value;
        found = my_list->find_by_val(value);
        if (found==-1){cout<<"element have not been found";}
        else {cout<<"element position "<<found;}
        }
    break;
    case 7:{
        cout<<"Enter index:";
        int index;
        cin>>index;
        cout<<"Enter value:";
        char value;
        cin>>value;     
        m = my_list->cahnge_by_index(value, index);
        if (m){cout<<"change by id done.";}
        else {cout<<"change by id failed";}
        }
    break;
    case 8:{
        string found;
        cout<<"Enter index:";
        int index;
        cin>>index;     
        found = my_list->find_by_id(index);
        cout<<"found "<<found;
        }
    break;
    case 9:{
        cout<<"Enter value:";
        char value;
        cin>>value;     
        m = my_list->check_by_val(value);
        if (m){cout<<"Element exist.";}
        else {cout<<"Element haven't been found.";}     
        }
    break;
    case 10:{
        int list_size;
        list_size = my_list->show_size();
        cout<<"list size "<<list_size;
        }
    break;
    case 11:{
        int m = my_list->emptiness();
        if (m==0){
            cout<<"list is empty";
        }
        else{
            cout<<"list is not empty";
        }       
        }
    break;
    default:;
 
    }
 
    }
    
    return 0;
    
}
Если кто поможет с организацией подкласса итератор в классе list, буду очень благодарен..

Вернуться к обсуждению:
Кольцевой односвязный список на базе адресных указателей с использованием фиктивного элемента C++
0
Заказать работу у эксперта
Programming
Эксперт
94731 / 64177 / 26122
Регистрация: 12.04.2006
Сообщений: 116,782
16.10.2013, 21:26
Готовые ответы и решения:

Кольцевой односвязный список
Реализовал класс для работы со списком студентов( использовал кольцевой односвязный список). Для...

Односвязный кольцевой список
Односвязный кольцевой список. в качестве аргумента передается значение value. Если оно есть в...

Кольцевой односвязный список
Есть список программа удаляет добавляет редактирует сортирует есть поиск но если сначала добавить...

Кольцевой односвязный список
Собственно что это и с чем его едят! Как реализовать, если это что-то страшное! Задача : сделать...

0
16.10.2013, 21:26
IT_Exp
Эксперт
87844 / 49110 / 22898
Регистрация: 17.06.2006
Сообщений: 92,604
16.10.2013, 21:26
Помогаю со студенческими работами здесь

Кольцевой односвязный список
Доброго времени суток, требуется помощь в создании односвязного кольцевого списка. смог только этот...

Кольцевой односвязный список, сортировка
Помогите, пожалуйста, с сортировкой списка. #include &lt;iostream&gt; #include &lt;stdlib.h&gt; using...

Односвязный кольцевой список, реализовать
Помогите написать и реализовать кольцевой список

Кольцевой односвязный список, удалить из него все отрицательные числа
Здравствуйте, необходимо решить проблему в задаче: &quot;Сформулируйте кольцевой список с вещественным...

0
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2024, CyberForum.ru