|
|
Регистрация Восстановить пароль |
Регистрация | Задать вопрос |
Заплачу за решение |
Новые сообщения |
Сообщения за день |
Расширенный поиск |
Правила |
Всё прочитано |
|
Опции темы | Поиск в этой теме |
15.08.2012, 00:56 | #1 |
Новичок
Джуниор
Регистрация: 15.08.2012
Сообщений: 2
|
Двусвязные списки (С)
Доброй ночи!
Помогите пожалуйста: не могу понять вот эту часть кода у Шилдта: p->prior->next = i; т.е. не могу представить, как это происходит. может кто-нибудь доходчиво объяснить? Код:
|
15.08.2012, 07:38 | #2 |
Белик Виталий :)
Старожил
Регистрация: 23.07.2007
Сообщений: 57,097
|
p->prior->next по факту указывает на р
Но поскольку как я понимаю мы вставляем перед р другой элемент, нужно чтоб предыдущий знал и указывал на этот элемент. конструкция p->prior->next = i; дословно звучит как "Задать указателю предыдущего элемента, который указывает на меня другое значение, равное i, дабы он указывал не на меня а на новый вставляемый между нами элемент" Соответственно i->next = p; "Задать вставленному между нами элементу указатель следующего на меня"
I'm learning to live...
|
15.08.2012, 07:50 | #3 |
Новичок
Джуниор
Регистрация: 15.08.2012
Сообщений: 2
|
большое спасибо, буду думать над вашими словами ))
а вообще я чуть голову не сломала над этой частью: if(p->prior) { p->prior->next = i; i->next = p; i->prior = p->prior; p->prior = i; return; } |
Похожие темы | ||||
Тема | Автор | Раздел | Ответов | Последнее сообщение |
Двусвязные списки | vlados007 | Общие вопросы C/C++ | 5 | 13.02.2012 18:12 |
Двусвязные списки | Evacuator | C++ Builder | 0 | 29.05.2011 13:12 |
Двусвязные списки | aidar9012 | Помощь студентам | 6 | 28.06.2010 02:05 |
Двусвязные списки | Serp | Помощь студентам | 3 | 14.04.2009 16:13 |