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

С++ для начинающих

Войти
Регистрация
Восстановить пароль
 
VLK
193 / 162 / 12
Регистрация: 05.05.2013
Сообщений: 1,225
#1

Связанный список, найти ошибку - C++

22.08.2013, 16:26. Просмотров 258. Ответов 4
Метки нет (Все метки)

http://iguania.ru/stati-po-programmi...iy-spisok.html

Вот статья про связанный список, все доступно и понятно написано, я взял из нее первый список, который добавляет узлы в конец списка, переписал, вроде как все строчка в строчку, кроме конечно некоторых названий переменных, классов, все работает, но мне не выводит последний узел тот, у которого указатель next = NULL, при это все тоже самое из статьи работает, помогите найти ошибку, вот код:

Кликните здесь для просмотра всего текста
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
#include <iostream>
using std::cout;
using std::cin;
using std::endl;
 
class MyNote
{
public:
int var; /* содержит значение */
MyNote *next; /* содержит адрес на следующий узел (объект класса MyNote) */
 
};
 
class MyList
{
private:
MyNote *head; /* начало связанного списка (первый объект класса MyNote) */
 
public:
MyList() { head = NULL; }
 
void add_MyNote(int rhs)
/* функция-элемент добавляющая новый узел (объект класса MyNote) в список */
{ 
MyNote *tempOne = new MyNote; /* динамически создаем новый узел (объект класса MyNote) */
tempOne->var = rhs; /* присваиваем var из класса MyNote значение */
tempOne->next = NULL; 
/* присваиваем указателю на следующий узел значение NULL т.е. 0,
мы только добавляем узел, он будет в списке последний, за ним ни чего нет, 
т.е. указывать не на что, по этому указываем на NULL, что будет означает 
что это последний узел списке */
 
/* теперь проверяем, является ли данный узел (объект класса MyNote) первым в программе */
if (head == NULL)
{ head = tempOne; }
 
/* если создаваемый  узел (объект класса MyNote) не является первым узлом в программе */
else
{ 
MyNote *tempTwo = head;
/* создаем вспомогательный объект и присваиваем ей указатель на начало списка */
 
/* ищем при помощи цикла (от начала списка), предпоследний узел (объект класса MyNote)
он должен содержать указатель next равный NULL, т.к. он до этого был последний узлом
для того, что бы найти созданный в предыдущий раз узел (объект класса MyNote) 
и присвоить его указателю next за место NULL, адрес на новый созданный узел (объект класса MyNote) */
while (tempTwo->next != NULL)
{
tempTwo = tempTwo->next;
/* переход к следующему узлу (объект класса MyNote),
для поиска next равного NULL */
}
/* после того как мы нашли предпоследний узел (объект класса MyNote), 
меняем его указатель next на последний узел (объект класса MyNote) */
tempTwo->next = tempOne;
}
}
 
 
void print_MyList() const 
/* функция-элемент выводящая на экран связанный список */
{ 
MyNote *temp = head;
 
/* выводим все значения хранящиеся в списке, пока не дойдем до узла 
с указателем на NULL, при этом сам узел с NULL (последний в списке) выведен не будет! */
while (temp->next != NULL)
{
cout << temp->var << endl;
temp = temp->next;
}
}
};
 
 
int main()
{
setlocale(LC_ALL,"");
 
MyList test;
 
test.add_MyNote(7); 
test.add_MyNote(4); 
test.add_MyNote(5); 
test.add_MyNote(12); 
test.add_MyNote(3); 
 
test.print_MyList();
 
system("pause");
return 0;
}


как я подозреваю проблема в функции print_MyList() и его цикле в строчках 67-71, но в статье точно такой же цикл и все нормально работает.


PS ну и по описанию, я все правильно пишу?
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
22.08.2013, 16:26     Связанный список, найти ошибку
Посмотрите здесь:

Связанный список. List, не могу найти ошибку в куске кода - C++
Программа работает, но работает не правильно. Суть функции, создается список, заполняется, потом надо по нужным условиям найти элементы и...

Связанный список. - C++
Компилятор ругается на строку 169 In member function `virtual Node* HeadNode::Insert(Data*)': 169 argument of type...

Связанный список - C++
ребят,нужна помощь. короче дело в том,что нужно &quot;то есть тебе нужно поменять местами ссылки друг на друга.. то есть когда ты считываешь...

Связанный список - C++
Всем доброго время суток, написать программу демонстрации связанного списка, где PART - (ДЕТАЛЬ) содержит номер детали и остальную...

Связанный список - C++
Доброе утро есть ли у кого пример Связанного списка. И чем он вообще отличаетьсяот массива кроме того , что связанный список динамичен.

Связанный список - C++
Не могу обратиться к методу класса Node хотя они выраженны как public: void addNode(int d); void printList(); #include&lt;iostream&gt; ...

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

Однонаправленный связанный список - C++
вот задание Однонаправленный связанный список Тип информационной части узла списка-char 1. Определение структуры информационной...

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

Связанный список (ООП) - C++
Ребят , помогите с лабой пожалуйста. Вот задание : Створити динамічний клас University, що базується на зв’язному списку, де кожний...

И снова связанный список - C++
Есть кусок связанного списка, только начал его делать, в тырнете много примеров как он реализован на структурах, в одних случаях структура...

Циклический связанный список - C++
Доброго времени суток. Пытаюсь посчитать количество значений в циклическом списке. Но всегда получается на 1 значение меньше. Или я должен...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
anmartex
...
1701 / 1194 / 494
Регистрация: 12.02.2013
Сообщений: 1,978
22.08.2013, 17:30     Связанный список, найти ошибку #2
VLK, 67 строка: while (temp != NULL)
VLK
193 / 162 / 12
Регистрация: 05.05.2013
Сообщений: 1,225
22.08.2013, 17:46  [ТС]     Связанный список, найти ошибку #3
anmartex, но почему в коде статьи все работает нормально?
anmartex
...
1701 / 1194 / 494
Регистрация: 12.02.2013
Сообщений: 1,978
22.08.2013, 17:52     Связанный список, найти ошибку #4
Цитата Сообщение от VLK Посмотреть сообщение
anmartex, но почему в коде статьи все работает нормально?
Потому что там такой ошибки нет. Будьте внимательней.
VLK
193 / 162 / 12
Регистрация: 05.05.2013
Сообщений: 1,225
22.08.2013, 17:56  [ТС]     Связанный список, найти ошибку #5
anmartex, спасибо, теперь разглядел, так тяжело находить собственные ошибки, просто в упор ни видишь..
Yandex
Объявления
22.08.2013, 17:56     Связанный список, найти ошибку
Ответ Создать тему
Опции темы

КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2017, vBulletin Solutions, Inc.
Рейтинг@Mail.ru