С Новым годом! Форум программистов, компьютерный форум, киберфорум
Наши страницы

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

Войти
Регистрация
Восстановить пароль
 
Рейтинг: Рейтинг темы: голосов - 9, средняя оценка - 4.67
kravam
быдлокодер
1704 / 891 / 45
Регистрация: 04.06.2008
Сообщений: 5,489
#1

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

18.04.2011, 01:05. Просмотров 1139. Ответов 11
Метки нет (Все метки)

Друзья! В общем, надо реализовать связный список и понятно, последний элемент должен содержать адрес 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 ();  
}
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
18.04.2011, 01:05
Здравствуйте! Я подобрал для вас темы с ответами на вопрос Как в связном списке присвоить NULL полю next, если тип этого поля не указатель, а ссылка? (C++):

Как удалить узел в связном списке? - C++
привет всем! подскажите пожалуйста в подробностях как происходит удаление узла в алгоритме связного списка ?? #include "stdafx.h" ...

Как в связном списке обратиться к элементу по адресу - C++
как в связном списке обратиттся к элементу по нужному адресу? Добавлено через 46 минут как в связном списке обратится к нужному...

Как присвоить значение полю структуры, находящейся в списке? - C#
using System; using System.Collections.Generic; using System.ComponentModel; using System.Data; using System.Drawing; using...

Возможно ли через выпадающее меню DBComboBox присвоить полю null? - Delphi БД
Здравствуйте! Возможно ли через выпадающее меню DBComboBox присвоить полю null? То есть можно ли это сделать с помощью свойства items?

XML. Как мне добится того, чтоб в списке было 1, NULL, NULL, 4? - C# ASP.NET
Есть следующий кусочек XML файла: <root> <row> <cell><data>1</data></cell> <cell><data>2</data></cell> ...

Как в связном списке внутри цикла ForEach-Next элемент сделать текущим? - Pure Basic
Совсем недавно начал изучать PureBasic, и столкнулся с проблемой, извиняюсь, если задача пустяк, нигде в документации не могу найти решения...

11
Ma3a
Эксперт С++
619 / 463 / 31
Регистрация: 28.01.2011
Сообщений: 605
18.04.2011, 01:20 #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 блоком.
0
kravam
быдлокодер
1704 / 891 / 45
Регистрация: 04.06.2008
Сообщений: 5,489
18.04.2011, 01:28  [ТС] #3
А чё, этот код рабочий? (Даже если закомментить getchar ()
............

C++
1
p->next= *temp;
Не компилится
0
easybudda
Модератор
Эксперт CЭксперт С++
9700 / 5650 / 964
Регистрация: 25.07.2009
Сообщений: 10,873
18.04.2011, 01:36 #4
kravam, на сколько я знаю, ссылка на что-то должна указывать, нельзя создать ссылку ни на что. Используйте указатели.
0
kravam
быдлокодер
1704 / 891 / 45
Регистрация: 04.06.2008
Сообщений: 5,489
18.04.2011, 01:41  [ТС] #5
Может ещё кто скажет? Просто это задание из книги
"Используя конструкцию struct, создайте односвязный список, содержащий целое число и ссылку на следующий элемент списка "
...А вдруг авторы исхитрились и использовали-таки ссылку?
0
Ma3a
Эксперт С++
619 / 463 / 31
Регистрация: 28.01.2011
Сообщений: 605
18.04.2011, 01:42 #6
kravam, не компилируется потому, что оператор присваивания(да и конструктор бы по-хорошему) нужно написать, инициализирующий ссылку.

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

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

В общем, это бесконечная рекурсия. Но я не буду настаивать на помощи раз уж такое дело, хотя авторы книги производят впечатление программистки грамотных людей, то есть что пишущих, то и имеющих ввиду. Но общем подожду ещё не буду в ответы пока заглядывать.
0
Ma3a
Эксперт С++
619 / 463 / 31
Регистрация: 28.01.2011
Сообщений: 605
18.04.2011, 01:52 #8
К слову, что за книга?
0
kravam
быдлокодер
1704 / 891 / 45
Регистрация: 04.06.2008
Сообщений: 5,489
18.04.2011, 02:05  [ТС] #9
Книга ОЧЕНЬ ПУТЁВАЯ, идёт с диском
"Максим Кузнецов Игорь Симдянов, C++ мастер-класс в задачах и примерах"
А вот их сайт
http://www.softtime.ru/cpp/
А вот такие задания в книге, неплохо, да?
http://www.bhv.ru/books/full_contents.php?id=179009
0
kazak
3050 / 2371 / 160
Регистрация: 11.03.2009
Сообщений: 5,437
Завершенные тесты: 1
18.04.2011, 03:26 #10
Скорее всего авторы употребили слово "ссылка" в общем смысле, а не как конструкцию языка. Потому как ссылку в с++ нетолько нужно инициализировать при объявлении, но и впоследствии нельзя изменять.
0
taras atavin
3570 / 1754 / 91
Регистрация: 24.11.2009
Сообщений: 27,567
18.04.2011, 07:04 #11
next не должен быть ссылкой, так как ссылки должны жёстко привязыватсья к объектам при первом же присваивание чего либо кроме NULL. Делай указателем.
0
kravam
быдлокодер
1704 / 891 / 45
Регистрация: 04.06.2008
Сообщений: 5,489
18.04.2011, 22:27  [ТС] #12
Да, ребята, в структурах авторы использовали именно указатели, а не ссылки.
0
18.04.2011, 22:27
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
18.04.2011, 22:27
Привет! Вот еще темы с ответами:

1C 8.x Присвоить значения одного поля ввода другому полю в 1С:8.2 Управляемое приложение - 1С
Подскажите пожалуйста, у меня есть на форме в 1С 8.2 поля для ввода данных. Необходимо после ввода данных в одно поле присвоить это...

Как sql-ой командой присвоить полю date первой таблицы значение поля date второй таблицы? - PHP
Добрый день. Есть 2 таблицы aaa с полями name, date bbb с полями name, date как sql-ой командой присвоить полю date первой...

Подскажите как перечислить все поля через индексатор , тоесть просмотреть значения полей и если нужно то и присвоить - C#
заместо полей у меня сразу свойства сделаны как получить доступ к ним через индекс ? что бы можно было присваивать значения и ...

Пузырёк на связном списке - C++
Здравствуйте! Не могли Вы подсказать, почему после первого прохождения по списку все остается как было. Т.е. элементы переставляются, но...


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

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

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