|
|
Регистрация Восстановить пароль |
Регистрация | Задать вопрос |
Заплачу за решение |
Новые сообщения |
Сообщения за день |
Расширенный поиск |
Правила |
Всё прочитано |
|
|
Опции темы | Поиск в этой теме |
06.06.2008, 20:24 | #1 |
Форумчанин
Регистрация: 29.10.2007
Сообщений: 628
|
Связанные списки в C++
Здравствуйте, в С++ есть такая тема как "связанные списки". Ни как не могу с ней разобраться Понял только то, что связанные списки связывают какое-то колличество объектов с помощью указателей. И мол не каждый класс может создавать связанные списки, а только такие:
Код:
|
06.06.2008, 21:19 | #2 |
Меркантильный кю
Участник клуба
Регистрация: 02.02.2008
Сообщений: 1,001
|
Это такая стуктура данных, которая кроме каких-то пользовательских данных хранит ещё и ссылку на следующий и/или предыдущий элемент. Т.е. мы можем передвигаться только вперёд и/или назад.
С помощью списков, или на их основе, реализуются такие более сложные структуры, как, например дерево. Достоинстовом списка является то, что он ограничен только памятью компа и размерностью указателя. Список используется, например, при рекурсии, (в этом случае это так называемый стэк). Мы заносим в него данные из вызывающей функции, а в вызванной достаём их оттуда. Вот реализация стэка на C++ (возможно не самая лучшая, но вполне работающая) Код:
Посмотри ещё в нете, про списки очень много инфы, ибо они используются буквально на каждом шагу
Росли вроде умными, выросли дурнями... (c)А.Васильев
|
06.06.2008, 21:37 | #3 |
Форумчанин
Регистрация: 29.10.2007
Сообщений: 628
|
Ой, что-то в вашем примере нет даже классов... А я щас прохожу классы, объекты, а вот теперь связанные списки. Просто если взять в пример что-нибудь другое, отличное от классов, то мне вообще не разобраться А вообще спасибо за ваш ответ. Вот в книге есть такой пример:
Код:
|
06.06.2008, 21:40 | #4 |
Форумчанин
Регистрация: 06.06.2008
Сообщений: 105
|
pHead - указатель на начало списка
pLC - мы добавляем pLC->pNext = pHead; - здесь мы в наш новый элемент, пишем следующий за ним - то есть тот, что сейчас первый.. pHead = pLC; - подменяем первый элемент на текущий |
06.06.2008, 21:45 | #5 |
Меркантильный кю
Участник клуба
Регистрация: 02.02.2008
Сообщений: 1,001
|
у меня не класс а запись, можно обозвать её классом и запихнуть туды функции, получится то же самое
Росли вроде умными, выросли дурнями... (c)А.Васильев
|
06.06.2008, 21:52 | #6 |
Форумчанин
Регистрация: 29.10.2007
Сообщений: 628
|
Olympian, Greblin, спасибо вам. Вот например я щас на ковылял программу, посмотрите пожалуйста, все ли там правильно, то ли я передаю в функцию?
Код:
PS: это такая тема, достаточно сложная или я что-то "туплю"? |
06.06.2008, 21:58 | #7 |
Форумчанин
Регистрация: 06.06.2008
Сообщений: 105
|
Код:
14. NameDataSet* pHead; Должна быть не локальной в функции, а глобальной. От локальной толку мало - создаем, и тут же удаляем. По своему опыту скажу - первый раз - это дейтсвительно не просто, мне было. Но если понять один раз саму идею, независимо от реализаций - т.е. абстракцию, как это выглядит примерно - то уже всё просто будет. |
06.06.2008, 21:58 | #8 |
Форумчанин
Регистрация: 29.10.2007
Сообщений: 628
|
|
06.06.2008, 22:06 | #9 | |
Форумчанин
Регистрация: 29.10.2007
Сообщений: 628
|
Olympian Если переношу строчку NameDataSet* pHead; в функцию main, то не работает, а сунул после класса, вроде заработало:
Код:
А как теперь это использовать? можно ли, допустим, обратиться ко второму блоку, и заполнить какие-либо члены класса class NameDataSet данными? Цитата:
Последний раз редактировалось Rembo; 06.06.2008 в 22:14. |
|
06.06.2008, 23:44 | #10 |
Eclipse Foundation
Старожил
Регистрация: 19.09.2007
Сообщений: 2,604
|
Устройство связных списков довольно простое. Суть вот в чем. Представьте себе гирлянду. Каждый фонарь - элемент, а провод между ними - указатель на следующий элемент. Тоесть первый фонарь имеет односторонний доступ (если список односвязный) только к следующему фонарю. А следующий - к следующему. И так далее.
А теперь к спискам. Данное поле в классе Код:
Код:
Вот и все. |
|
Похожие темы | ||||
Тема | Автор | Раздел | Ответов | Последнее сообщение |
Связанные таблицы в Аксессе | mirawoo | Microsoft Office Access | 8 | 12.03.2008 00:13 |
Не отображаются данные связанные с гл. таблицей? | zimmion | БД в Delphi | 11 | 27.02.2008 18:50 |
Связанные таблицы - проблема при обращении к полю БД | nataly_ukr | БД в Delphi | 7 | 13.11.2007 10:47 |
Добавление записей в связанные таблицы с помощью Навигатора | ~MaGic~ | БД в Delphi | 2 | 09.07.2007 08:01 |