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

Разбираю списки .Правильно ли понял ? - C++

Восстановить пароль Регистрация
 
zek921
9 / 9 / 2
Регистрация: 30.04.2011
Сообщений: 130
Записей в блоге: 1
21.09.2011, 23:09     Разбираю списки .Правильно ли понял ? #1
А если нет - укажите где ошибки у меня .
и
1) Правильный ли код с точки зрения понимания ?
2) Как бы выглядела более оптимизированная версия ?



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
struct Node
{
    int data;   //информационное поле, данные, любой порядковый тип
    Node *next;     //указатель на следующий элемент
};
typedef Node * PNode;
 
 
 
void main()
{
int SomeValue;
Pnode head ;
Pnode last;
Pnode temp;
 
last = new Node;
last -> value = SomeValue;
last-> next = NULL;
 
head = last;
 
temp = new Node;
 
temp->value = SomeValue;
temp->next = NULL;
last->next = temp;
 
temp->value = SomeValue;
temp->next = NULL;
 
last->next = temp;
 
// итератор по списку
temp = head;
while(temp->next != NULL)
{
//операции
// ...
//
temp = temp->next;
 
}
 
 
}

т е сделали Временную структуру ,заполнили ,поставили указатель на нее в структуре last ????

и + вопрос :
0 и NULL не одно и то же
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
Jupiter
Каратель
Эксперт C++
6542 / 3962 / 226
Регистрация: 26.03.2010
Сообщений: 9,273
Записей в блоге: 1
Завершенные тесты: 2
21.09.2011, 23:17     Разбираю списки .Правильно ли понял ? #2
Цитата Сообщение от zek921 Посмотреть сообщение
0 и NULL не одно и то же
в языке Си нет

Цитата Сообщение от zek921 Посмотреть сообщение
2) Как бы выглядела более оптимизированная версия ?
смотри std::list
zek921
9 / 9 / 2
Регистрация: 30.04.2011
Сообщений: 130
Записей в блоге: 1
21.09.2011, 23:36  [ТС]     Разбираю списки .Правильно ли понял ? #3
а касательно кода ,какие ошибки допустил ? С радостью бы покопался в List ,но боюсь,что без предварительного знания вопроса запутаюсь еще больше .
Chelioss
179 / 179 / 4
Регистрация: 08.01.2011
Сообщений: 1,131
22.09.2011, 00:32     Разбираю списки .Правильно ли понял ? #4
Замени
C++
1
2
3
4
5
6
7
8
while(temp->next != NULL)
{
//операции
// ...
//
temp = temp->next;
 
}
На
C++
1
2
3
4
5
6
7
8
while(temp != NULL)
{
//операции
// ...
//
temp = temp->next;
 
}
Допустим в списке 1 узел. По идее блок цикла должен один раз проработать. Проработает ли один раз блок цикла при условии temp->next != NULL ? Нет. А temp != NULL ? Проработает.
А если вообще нет узлов? Тогда будет ошибка времени выполнения, потому что temp = 0, а temp->next не существует. Для двух узлов и более, думаю, понятно как дела обстоят.

Добавлено через 6 минут
Цитата Сообщение от zek921 Посмотреть сообщение
last -> value = SomeValue;
SomeValue - не инициализированная переменная. Хотя иногда срабатывает, но лучше такого не допускать.

Добавлено через 1 минуту
C++
1
2
3
4
5
6
7
8
temp->value = SomeValue;
temp->next = NULL;
last->next = temp;
 
temp->value = SomeValue;
temp->next = NULL;
 
last->next = temp;
Правильно так:
C++
1
2
3
4
5
temp->value = SomeValue;
temp->next = NULL;
last->next = temp;
 
Last = temp;
zek921
9 / 9 / 2
Регистрация: 30.04.2011
Сообщений: 130
Записей в блоге: 1
22.09.2011, 01:41  [ТС]     Разбираю списки .Правильно ли понял ? #5

Не по теме:

спасибо,с++мягко говоря не помню ,привык к c #,где все готовенькое

еще вопрос ,важна ли последовательность присвоить голове списка значения хвоста,а уже потом хвост заполнять и наводить связи или важно сначала заполнить
хвост ,а уже потом присваивать значения (ссылки?..)голове ?,

Добавлено через 1 минуту
(первый,элемент)
Yandex
Объявления
22.09.2011, 01:41     Разбираю списки .Правильно ли понял ?
Ответ Создать тему
Опции темы

Текущее время: 04:45. Часовой пояс GMT +3.
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2016, vBulletin Solutions, Inc.
Рейтинг@Mail.ru