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

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

Войти
Регистрация
Восстановить пароль
 
zek921
9 / 9 / 2
Регистрация: 30.04.2011
Сообщений: 130
Записей в блоге: 1
#1

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

21.09.2011, 23:09. Просмотров 428. Ответов 4
Метки нет (Все метки)

А если нет - укажите где ошибки у меня .
и
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 не одно и то же
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
21.09.2011, 23:09     Разбираю списки .Правильно ли понял ?
Посмотрите здесь:

C++ Указатели: правильно ли я понял вопрос?
не понял. битовые поля C++
C++ я наверно не так тему понял?
Я понял, мало кто знает, как ПРАВИЛЬНО интегрировать Internet Explorer в свою :-) окно... C++
Возвращение адреса. Не много не до понял C++
Не понял ошибку C++
Правильно ли я понял объявления указателей C++
C++ Правильно ли я понял условие ?
C++ Связные списки в С++.Не понял ничего
Можете сказать, я правильно понял задание? C++
C++ Немного не понял описание классов
Разбираю все варианты, этот не могу C++

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

Или воспользуйтесь поиском по форуму:
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
Jupiter
Каратель
Эксперт С++
6550 / 3970 / 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,133
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     Разбираю списки .Правильно ли понял ?
Ответ Создать тему
Опции темы

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