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

Как в связном списке присвоить NULL полю next, если тип этого поля не указатель, а ссылка? - C++

Восстановить пароль Регистрация
 
Рейтинг: Рейтинг темы: голосов - 9, средняя оценка - 4.67
kravam
быдлокодер
 Аватар для kravam
1512 / 872 / 44
Регистрация: 04.06.2008
Сообщений: 5,271
18.04.2011, 01:05     Как в связном списке присвоить NULL полю next, если тип этого поля не указатель, а ссылка? #1
Друзья! В общем, надо реализовать связный список и понятно, последний элемент должен содержать адрес NULL, вот ломаю голову как это сделать; с указателями я бы справился а вот со ссылками не могу, помогите пожалуйста! Спасибо.

C++
1
2
3
4
5
6
7
8
9
10
struct pp {
 int ch;
 pp& next;
};
 
int main () {
 pp* p= new pp;
 p->next= NULL;//Вот эта строка!!!!!!!
 getchar ();  
}
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
18.04.2011, 01:05     Как в связном списке присвоить NULL полю next, если тип этого поля не указатель, а ссылка?
Посмотрите здесь:

C++ Пузырёк на связном списке
быстрая сортировка на связном списке в С++ C++
C++ Алгоритм Дейкстры в связном списке + файлы.
Copy-Constructor В Шаблонном Связном списке C++
Как в связном списке обратиться к элементу по адресу C++
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
Ma3a
Эксперт C++
612 / 456 / 31
Регистрация: 28.01.2011
Сообщений: 605
18.04.2011, 01:20     Как в связном списке присвоить NULL полю next, если тип этого поля не указатель, а ссылка? #2
C++
1
2
3
4
5
6
7
8
9
10
struct pp {
 int ch;
 pp& next;
};
int main () {
 pp* p= new pp;
 pp * temp = 0;
 p->next= *temp;
 getchar (); 
}
Но на самом деле некорректно говорить, что ссылка будет равняться NULL, просто будет указывать в недоступную область памяти. Поэтому, если захотите проверить на некорректное значение поля next, фокус с next == NULL не пройдет, будет выброшено исключение и придется его ловить соответствующим try catch блоком.
kravam
быдлокодер
 Аватар для kravam
1512 / 872 / 44
Регистрация: 04.06.2008
Сообщений: 5,271
18.04.2011, 01:28  [ТС]     Как в связном списке присвоить NULL полю next, если тип этого поля не указатель, а ссылка? #3
А чё, этот код рабочий? (Даже если закомментить getchar ()
............

C++
1
p->next= *temp;
Не компилится
easybudda
Модератор
Эксперт С++
 Аватар для easybudda
9373 / 5423 / 914
Регистрация: 25.07.2009
Сообщений: 10,423
18.04.2011, 01:36     Как в связном списке присвоить NULL полю next, если тип этого поля не указатель, а ссылка? #4
kravam, на сколько я знаю, ссылка на что-то должна указывать, нельзя создать ссылку ни на что. Используйте указатели.
kravam
быдлокодер
 Аватар для kravam
1512 / 872 / 44
Регистрация: 04.06.2008
Сообщений: 5,271
18.04.2011, 01:41  [ТС]     Как в связном списке присвоить NULL полю next, если тип этого поля не указатель, а ссылка? #5
Может ещё кто скажет? Просто это задание из книги
"Используя конструкцию struct, создайте односвязный список, содержащий целое число и ссылку на следующий элемент списка "
...А вдруг авторы исхитрились и использовали-таки ссылку?
Ma3a
Эксперт C++
612 / 456 / 31
Регистрация: 28.01.2011
Сообщений: 605
18.04.2011, 01:42     Как в связном списке присвоить NULL полю next, если тип этого поля не указатель, а ссылка? #6
kravam, не компилируется потому, что оператор присваивания(да и конструктор бы по-хорошему) нужно написать, инициализирующий ссылку.

Добавлено через 31 секунду
скорее всего, имелся ввиду именно указатель.
kravam
быдлокодер
 Аватар для kravam
1512 / 872 / 44
Регистрация: 04.06.2008
Сообщений: 5,271
18.04.2011, 01:51  [ТС]     Как в связном списке присвоить NULL полю next, если тип этого поля не указатель, а ссылка? #7
Цитата Сообщение от Ma3a Посмотреть сообщение
kravam, не компилируется потому, что оператор присваивания(да и конструктор бы по-хорошему) нужно написать, инициализирующий ссылку.
В этом-то вся и фишка!

...Мы пишем конструктор, инициализирующий ссыль, а она ссылается на переменную такого же типа (struct pp), причём эта переменная должна РЕАЛЬНО существовать, то есть она должна уже быть определена, а в ней есть тоже ссыль, которая ссылается на...

В общем, это бесконечная рекурсия. Но я не буду настаивать на помощи раз уж такое дело, хотя авторы книги производят впечатление программистки грамотных людей, то есть что пишущих, то и имеющих ввиду. Но общем подожду ещё не буду в ответы пока заглядывать.
Ma3a
Эксперт C++
612 / 456 / 31
Регистрация: 28.01.2011
Сообщений: 605
18.04.2011, 01:52     Как в связном списке присвоить NULL полю next, если тип этого поля не указатель, а ссылка? #8
К слову, что за книга?
kravam
быдлокодер
 Аватар для kravam
1512 / 872 / 44
Регистрация: 04.06.2008
Сообщений: 5,271
18.04.2011, 02:05  [ТС]     Как в связном списке присвоить NULL полю next, если тип этого поля не указатель, а ссылка? #9
Книга ОЧЕНЬ ПУТЁВАЯ, идёт с диском
"Максим Кузнецов Игорь Симдянов, C++ мастер-класс в задачах и примерах"
А вот их сайт
http://www.softtime.ru/cpp/
А вот такие задания в книге, неплохо, да?
http://www.bhv.ru/books/full_contents.php?id=179009
kazak
 Аватар для kazak
3029 / 2350 / 155
Регистрация: 11.03.2009
Сообщений: 5,401
18.04.2011, 03:26     Как в связном списке присвоить NULL полю next, если тип этого поля не указатель, а ссылка? #10
Скорее всего авторы употребили слово "ссылка" в общем смысле, а не как конструкцию языка. Потому как ссылку в с++ нетолько нужно инициализировать при объявлении, но и впоследствии нельзя изменять.
taras atavin
Ушёл с форума.
 Аватар для taras atavin
3569 / 1752 / 91
Регистрация: 24.11.2009
Сообщений: 27,619
18.04.2011, 07:04     Как в связном списке присвоить NULL полю next, если тип этого поля не указатель, а ссылка? #11
next не должен быть ссылкой, так как ссылки должны жёстко привязыватсья к объектам при первом же присваивание чего либо кроме NULL. Делай указателем.
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
18.04.2011, 22:27     Как в связном списке присвоить NULL полю next, если тип этого поля не указатель, а ссылка?
Еще ссылки по теме:

C++ Исправить ошибки в связном списке
непонятка в связном списке C++
Передать значение из одной функции в другую функцию в связном списке C++

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

Или воспользуйтесь поиском по форуму:
kravam
быдлокодер
 Аватар для kravam
1512 / 872 / 44
Регистрация: 04.06.2008
Сообщений: 5,271
18.04.2011, 22:27  [ТС]     Как в связном списке присвоить NULL полю next, если тип этого поля не указатель, а ссылка? #12
Да, ребята, в структурах авторы использовали именно указатели, а не ссылки.
Yandex
Объявления
18.04.2011, 22:27     Как в связном списке присвоить NULL полю next, если тип этого поля не указатель, а ссылка?
Ответ Создать тему
Опции темы

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