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

Проход по элементам односвязного линейного списка - C++

Восстановить пароль Регистрация
Другие темы раздела
C++ Что означает запись в скобках и что возвращает return http://www.cyberforum.ru/cpp-beginners/thread622084.html
Всем привет! Начал читать книгу BecomeAnXcoder и тут появился вопрос. В пример приведен такой код circleArea(float theRadius) //(1) { float theArea; theArea = 3.14159 * theRadius * theRadius; return theArea; //(2) } Вопрос такой, что означает запись в скобках (1) и куда и что возвращает параметр return (2)?
C++ Программа не компилируется, как разрешить ? Есть файл А в нем #ifndef _A_ #define _A_ #include "B.h" class A { public: http://www.cyberforum.ru/cpp-beginners/thread622075.html
Чтение и запись в консоли C++
Здравствуйте, могли бы вы подсказать как данное сделать? Мне нужно записать в консоль данные (Учитывая что это dll которая будет включатся в другую программу) и прочитать данные с консоли. Это будет dll. У меня получились некоторые наработки, но текст в консоли появляется только после ВЫКЛЮЧЕНИЯ dll. Т.е я запускаю dll(В программе), после того как я закрою dll(в программе) только потом и...
Определить, сколько раз встречается в строку самое короткое слово (перевести из PASCAL в С++) C++
Дана строка содержащая текст на русском языке. Определить, сколько раз встречается в нем самое короткое слово. Вот моя прога на Паскале: program prog; uses crt; var min,len, i, j,k : integer; s,slovo, str, n: string; min_str : array of string; begin
C++ Выпуклый многоугольник http://www.cyberforum.ru/cpp-beginners/thread622033.html
Есть массив точек, нужно определить выпуклый ли это многоугольник. Я так понимаю что нужно посчитать каждый угол. Может быть можно другим более простым способом это сделать ?
C++ Просуммировать и выдать сумму всех чисел диапазона Суть первой задачи такова, чтобы пользователем вводились два числа - нижнее и верхнее значение диапазона чисел, а потом все числа входящие в диапазон (нижнее и верхнее включительно) надо просуммировать и выдать сумму всех членов диапазона. Во втором задании хотят, чтобы у пользователя запрашивалось несколько значений и отображалось сообщение о количестве отрицательных чисел среди них.... подробнее

Показать сообщение отдельно
alsav22
5282 / 4801 / 442
Регистрация: 04.06.2011
Сообщений: 13,587
11.07.2012, 16:15     Проход по элементам односвязного линейного списка
Цитата Сообщение от Uz Посмотреть сообщение
А для двусвязного списка также реализуется?
Да. Вот код попался в инете:
код
"Вобщем нужно реализовать основные функции для работы с двусвязанным списком (вставка элемента,удаление,печать,сортировка ).
вот что уже набросал:"
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
#include <iostream>
#include <conio.h>
using namespace std;
 
 struct Node
 {
 int d;
 Node *next;
 Node *prev;
 };
 Node * first(int d);
 void add(Node **pend, int d);
 Node * find(Node * const pbeg, int i);
 bool remove(Node **pbeg, Node **pend, int key);
 Node *insert(Node *const pbeg, Node **pend, int key, int d);
 void PrintList(Node *pbeg);
 void main()
 {}
 Node *first(int d)// Формирование первого элемента
 {
 Node *pv = new Node;
 pv->d = d; pv->next = 0; pv->prev = 0;
 return pv;
 }
 
 void add(Node **pend, int d)// Добавление в конец списка
 {
 Node *pv = new Node;
 pv->d = d; pv->next = 0; pv->prev = *pend;
 (*pend)->next = pv;
 *pend = pv;
 }
 Node *find(Node *const pbeg, int d)// Поиск элемента по ключу
 {
 Node *pv = pbeg;
 while (pv)
 {
 if(pv->d == d)break;
 pv = pv->next;
 }
 return pv;
 }
 bool remove(Node **pbeg, Node **pend, int key)// Удаление элемента
 {
 if(Node *pkey = find(*pbeg, key))
 { 
 if (pkey == *pbeg)// проверяется,находится ли удаляемый элемент в начале списка
 { 
 *pbeg = (*pbeg)->next;// если да,то надо скорректировать указатель pbeg на начало списка так, чтобы он указывал на следующий элемент в списке, адрес которого находится в поле next первого элемента
 (*pbeg)->prev =0;// обнуляется указатель на предыдущий элемент
 }
 else if (pkey == *pend)// если удаляемый элемент находится в конце списка, требуется сместить указатель pend конца списка на предыдущий элемент, адрес которого можно получить из поля prev последнего элемента
 { 
 *pend = (*pend)->prev;
 (*pend)->next=0;// обнуляется указатель на следующий элемент
 }
 else // Если удаление происходит из середины списка, то нужно лишь обеспечить двустороннюю связь предыдущего и последующего элементов
 {
 (pkey->prev)->next = pkey->next;
 (pkey->next)->prev = pkey->prev;
 }
 delete pkey;
 return true;
 }
 return false;
 }
 
 Node *insert (Node *const pbeg, Node **pend, int key, int d)// Вставка элемента
 {
 if(Node *pkey = find(pbeg, key))
 {
 Node *pv = new Node;
 pv->d = d;
 pv->next = pkey->next;// установление связи нового узла с последующим
 pv->prev = pkey;// установление связи нового узла с предыдущим
 pkey->next = pv;// установление связи предыдущего узла с новым
 if(pkey != *pend)(pv->next)->prev = pv;// установление связи последующего узла с новым
 // Обновление указателя на конец списка,
 // если узел вставляется в конец
 else *pend = pv;
 return pv;
 }
 return 0;
 }
 void PrintList(Node *pbeg)// Печать списка
 {
// pv пробегает по списку, начиная с головы
 Node *pv = pbeg;
 while(pv != NULL)// пока не конец списка, печатать значение данных текущего узла 
 {
 cout << pv->d << endl;
 pv = pv->next; // перейти к следующему узлу 
 }
 }
 
Текущее время: 19:07. Часовой пояс GMT +3.
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2016, vBulletin Solutions, Inc.
Рейтинг@Mail.ru