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

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

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

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

21.09.2011, 23:09. Просмотров 447. Ответов 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 не одно и то же
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
21.09.2011, 23:09
Здравствуйте! Я подобрал для вас темы с ответами на вопрос Разбираю списки .Правильно ли понял ? (C++):

Связные списки в С++.Не понял ничего - C++
Здравствуйте люди помогите пажалуйсто понять как работают связные списки.Я учусь по книге C++ для чайников.С начало все гладко...

Правильно ли я понял условие ? - C++
1) Нахожу обратную матрицу для очередной матрицы 2) Сравниваю полученную обратную матрицу с последующими матрицами 3) Если есть...

Указатели: правильно ли я понял вопрос? - C++
Есть задание Я написал такой код: #include<iostream> using namespace std; #include<windows> int main() {

Правильно ли я понял объявления указателей - C++
Делая задания по самоучителю, как то нужно проверять себя. Кроме вас некому )) Задание состоит в том - нужно объявить новый тип. Если...

Можете сказать, я правильно понял задание? - C++
Вычислить сумму чисел в каждой строке. N<=10, M<=10 #include<conio.h> #include<stdio.h> #include<stdlib.h> #include<time.h> int...

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

4
Jupiter
Каратель
Эксперт С++
6559 / 3980 / 227
Регистрация: 26.03.2010
Сообщений: 9,273
Записей в блоге: 1
Завершенные тесты: 2
21.09.2011, 23:17 #2
Цитата Сообщение от zek921 Посмотреть сообщение
0 и NULL не одно и то же
в языке Си нет

Цитата Сообщение от zek921 Посмотреть сообщение
2) Как бы выглядела более оптимизированная версия ?
смотри std::list
0
zek921
9 / 9 / 2
Регистрация: 30.04.2011
Сообщений: 130
Записей в блоге: 1
21.09.2011, 23:36  [ТС] #3
а касательно кода ,какие ошибки допустил ? С радостью бы покопался в List ,но боюсь,что без предварительного знания вопроса запутаюсь еще больше .
0
Chelioss
180 / 180 / 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;
0
zek921
9 / 9 / 2
Регистрация: 30.04.2011
Сообщений: 130
Записей в блоге: 1
22.09.2011, 01:41  [ТС] #5

Не по теме:

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

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

Добавлено через 1 минуту
(первый,элемент)
0
22.09.2011, 01:41
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
22.09.2011, 01:41
Привет! Вот еще темы с ответами:

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

Списки, как склеить списки между собой? - C++
Ребят, привет всем, есть код, в классе которого описаны несколько методов: добавление элемента в список, удаление и просмотр списка, дак...

Не понял ошибку - C++
#include <stdio.h> #include <iostream> #include <conio.h> int main(int argc, char* argv) { float...

не понял. битовые поля - C++
Опишите битовое поле для хранения следующей информации (размер задавать по минимуму): u номер группы (6 цифр); u ...


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

Или воспользуйтесь поиском по форуму:
5
Ответ Создать тему
Опции темы

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