19 / 19 / 5
Регистрация: 17.10.2010
Сообщений: 247
|
|||||||||||
1 | |||||||||||
Кольцевой односвязный список06.04.2011, 19:57. Показов 19490. Ответов 23
Доброго времени суток, требуется помощь в создании односвязного кольцевого списка. смог только этот быдлокод:
слегка разобрался с остальными, а вот второй и дальше никак не хочет добавлять
0
|
06.04.2011, 19:57 | |
Ответы с готовыми решениями:
23
Кольцевой односвязный список Односвязный кольцевой список Кольцевой односвязный список Односвязный кольцевой список |
377 / 228 / 79
Регистрация: 24.11.2009
Сообщений: 695
|
|
06.04.2011, 20:45 | 2 |
навскидку:
1
|
19 / 19 / 5
Регистрация: 17.10.2010
Сообщений: 247
|
|
06.04.2011, 20:47 [ТС] | 3 |
3. если я изменил указатель на 1 элемент - надо сохранить изменение - передаю его по-ссылке.
и структура описана в самом верху
0
|
377 / 228 / 79
Регистрация: 24.11.2009
Сообщений: 695
|
|
06.04.2011, 20:51 | 4 |
0
|
19 / 19 / 5
Регистрация: 17.10.2010
Сообщений: 247
|
||||||
06.04.2011, 20:52 [ТС] | 5 | |||||
0
|
377 / 228 / 79
Регистрация: 24.11.2009
Сообщений: 695
|
||||||||||||||||||||||||||
07.04.2011, 14:09 | 6 | |||||||||||||||||||||||||
Сообщение было отмечено как решение
Решение
понятно.
Основынм элементом связного списка является узел. Узел хранит полезные данные (в нашем случае это фамилии студентов) и обеспечивает связь со следующим элементом. Узел удобно описывать как структуру. Например такую:
Отлично, едем дальше. У нас стоит задача построить кольцевой односвязный список. Описываем класс с минимальным набором функций - добавление/удаление узла, просмотр данных узла (без возможности редактирования), навигация по списку. вместе с указателем на голову(начало) списка получим минимальный комплект. Для удобства добавим счетчик узлов и возможность перехода к первому узлу. Имеем следующее:
реализация методов my_list:
на этом описание класса связного списка завершено примеры обращения из main: примеры
И в завершение необходимые для работы хидеры и константы:
3
|
25 / 25 / 7
Регистрация: 02.12.2010
Сообщений: 824
|
|||||||||||
24.04.2011, 23:09 | 7 | ||||||||||
Только начал изучать C++, есть вопросов пару.
реализация методов my_list: собственно что это? часть класса? или это уже вне класса пишется?
Что значат такие строки
Будут еще вопросы пока что - это Добавлено через 33 минуты а еще методы разве не внутри структуры должны быть? Добавлено через 41 минуту Начал все по плотнее разглядывать! В общем или я где-то накосячил, или вы! У меня список выводится таким образом Например 5 элементов: 1 - 5 - 4 - 3 - 2 Например 3: 1 - 3 - 2 Например 4: 1 - 4 - 3 - 2 Поняли к чему я? Быть может я куда-то не туда смотрю? Я честно говоря скопипастил и попробовал переписать. В итоге и моя версия и ваша "глючные". Еще кое что.... Не могли бы вы поподробнее объяснить что делает оператор -> и как им пользоваться. Для чего структура nodes ? За что отвечают ее элементы?
0
|
В астрале
8049 / 4806 / 655
Регистрация: 24.06.2010
Сообщений: 10,562
|
|
25.04.2011, 00:53 | 8 |
VladSharikov, Nodes - узел списка.
Оператор -> - косвенная адрессация. Доступ к элементам через указатель. mylist::mylist() - консруктор по-умолчанию. Методы объявлены в классе, но описываются вне класса. Это хорошая практика для нешаблонных классов.
1
|
25 / 25 / 7
Регистрация: 02.12.2010
Сообщений: 824
|
||||||
25.04.2011, 01:55 | 9 | |||||
Окей, а можно поподробнее на счет -> ? Ощущение у меня такое, что он просто сдвигает вправо но видимо ощущение ложное. Допустим рассмотрим метод go_next()
Во первых ради интереса, а во вторых думаю это нужно знать обязательно! Так же нужно сделать go_previous();! Не пишите как, хочу додуматься как, просто тыкните в какую сторону думать! Вот я и разбираюсь в этом коде, чтобы сделать свою задачу!
0
|
В астрале
8049 / 4806 / 655
Регистрация: 24.06.2010
Сообщений: 10,562
|
|
25.04.2011, 07:54 | 10 |
VladSharikov, Окей. Функция класса go_next не принимающая параметров.
position - указатель на Nodes. Если указатель не нулевой - то ему присваивается его поле next. position->next - обращение к члену структуры через указатель, можно так же (*position).next
0
|
25 / 25 / 7
Регистрация: 02.12.2010
Сообщений: 824
|
|
25.04.2011, 08:06 | 11 |
ForEveR, тоесть .... хорошо. А чему равно поле next? Где именно это написано? Как он определил что в поле next 2 , а здесь 1?
0
|
В астрале
8049 / 4806 / 655
Регистрация: 24.06.2010
Сообщений: 10,562
|
|
25.04.2011, 09:35 | 12 |
VladSharikov, next это указатель. У него есть адрес. Код как следует просмотрите.
0
|
25 / 25 / 7
Регистрация: 02.12.2010
Сообщений: 824
|
|||||||||||
25.04.2011, 16:18 | 13 | ||||||||||
эквивалентная запись такая?
position - текущая позиция? значит этой командой текущей позиции присваиваем указатель на предыдущий элемент? (или на следующий?!)
0
|
В астрале
8049 / 4806 / 655
Регистрация: 24.06.2010
Сообщений: 10,562
|
|
25.04.2011, 16:21 | 14 |
VladSharikov, Следующий. Кстати записи отнюдь не эквивалентны. И вообще вторая запись некорректна.
0
|
25 / 25 / 7
Регистрация: 02.12.2010
Сообщений: 824
|
|||||||||||
25.04.2011, 16:38 | 15 | ||||||||||
Нет нет ! Это вопрос на счет второй записи.
значит корректна будет
бррр... я в упор не могу "представить" себе этот переход к следующему! И от этого не понимаю весь код блин! Добавлено через 13 минут
Если position(указатель на структуру) не NULL то переместить указатель но структуру на следующий, так? А если NULL то написать "Конец листа". Почему не вывелась надпись?
0
|
В астрале
8049 / 4806 / 655
Регистрация: 24.06.2010
Сообщений: 10,562
|
|
25.04.2011, 16:44 | 16 |
VladSharikov, Возможно position никогда не становится NULL... Вообще если список кольцевой - то это абсолютно логично.
По сути position == NULL, когда в списке нет ничего. В других случаях оно не может быть равным NULL.
0
|
25 / 25 / 7
Регистрация: 02.12.2010
Сообщений: 824
|
||||||
25.04.2011, 16:49 | 17 | |||||
Также.. подумал тут...
чтобы вернутся на несколько элементов назад(n) нужна такая функция.
Добавлено через 48 секунд 2 #16. И вправду. Что-то я не о том думаю! логично! Добавлено через 1 минуту Вопрос из той же оперы? Возможно ли узнать где мы находимся сейчас в данный момент? Или мы всегда находимся в конце списка? И да... с массивами было проще
0
|
В астрале
8049 / 4806 / 655
Регистрация: 24.06.2010
Сообщений: 10,562
|
|
25.04.2011, 16:50 | 18 |
VladSharikov, Вообщем на несколько элементов назад вернуться невозможно, ибо список односвязный. Исключительно на несколько элементов вперед. НО если учитывать что он кольцевой, тогда теоретически возможно прохождение всего списка до головы и проход далее. Но проход назад в односвязном списке по идее не соответствует его концепции. А функция да, верная по-моему.
position это и есть место где мы находимся в данный момент...
0
|
25 / 25 / 7
Регистрация: 02.12.2010
Сообщений: 824
|
||||||||||||||||
25.04.2011, 17:31 | 19 | |||||||||||||||
А зачем переход до головы, если можно просто присвоить position = head? тоесть начало списка?
А в функции моей нужно исправить steps на (count - steps) и тогда поидее она будет верной и будет работать, как думаете? Добавлено через 3 минуты Хотя count это ведь общее количество элементов списка... Тоесть мы получается с конца делаем три шага назад и указываем на этот элемент(например 10 элементов было, стали указывать на 7 элемент, даже если я находился на 6 позиции. Все равно в итоге будем указывать на 7 позицию.) и не важно на какой позиции мы находились, я прав? Добавлено через 15 минут Все таки как узнать где мы находимся в данный момент? Где мы должны находится в данный момент? по моему или в начале, или в конце. Посередине вроде никак? к position не обратится , ибо он private, да еще и указатель! Как?! Добавлено через 15 минут Кстати! При добавлении элемента в список таким образом
1 - 4 - 3 - 2 Код
ruslan nikolay victor vlad
0
|
1 / 1 / 0
Регистрация: 25.04.2011
Сообщений: 3
|
|
25.04.2011, 18:12 | 20 |
можете помочь примерно с такой задачей?
1
|
25.04.2011, 18:12 | |
25.04.2011, 18:12 | |
Помогаю со студенческими работами здесь
20
Кольцевой односвязный список Кольцевой односвязный список Односвязный кольцевой список, реализовать Кольцевой односвязный список, сортировка Искать еще темы с ответами Или воспользуйтесь поиском по форуму: |