IPB
ЛогинПароль:

> Прочтите прежде чем задавать вопрос!

1. Заголовок темы должен быть информативным. В противном случае тема удаляется ...
2. Все тексты программ должны помещаться в теги [code=pas] ... [/code].
3. Прежде чем задавать вопрос, см. "FAQ", если там не нашли ответа, воспользуйтесь ПОИСКОМ, возможно такую задачу уже решали!
4. Не предлагайте свои решения на других языках, кроме Паскаля (исключение - только с согласия модератора).
5. НЕ используйте форум для личного общения, все что не относится к обсуждению темы - на PM!
6. Одна тема - один вопрос (задача)
7. Проверяйте программы перед тем, как разместить их на форуме!!!
8. Спрашивайте и отвечайте четко и по существу!!!

> Кольцевые двусвязные списки, Организация и основные операции над кольцевыми двусвязными списками
User88
сообщение 6.01.2007 14:24
Сообщение #1





Группа: Пользователи
Сообщений: 5
Пол: Мужской
Реальное имя: Александр

Репутация: -  0  +


Здравствуйте, смотрел FAQ и набирал в поиске, но не нашел алгоритмов организации и реализации основных операций над кольцевыми двусвязными списками, может быть у кого-нибудь найдется этот материал, а то все никак не разберусь, заранее спасибо.
 Оффлайн  Профиль  PM 
 К началу страницы 
+ Ответить 
 
 Ответить  Открыть новую тему 
Ответов(1 - 6)
volvo
сообщение 6.01.2007 15:10
Сообщение #2


Гость






Что именно тебе не понятно? Как организуются кольцевые списки? Как делать проход по такому списку? ЧТО?

Все почти аналогично обычному линейному списку, за исключением одной маленькой детали...
 К началу страницы 
+ Ответить 
User88
сообщение 6.01.2007 15:27
Сообщение #3





Группа: Пользователи
Сообщений: 5
Пол: Мужской
Реальное имя: Александр

Репутация: -  0  +


Да, как они организуются(именно двусвязные кольцевые): добавление первого и последующих элементов, ну и удаление элементов из такого списка.
 Оффлайн  Профиль  PM 
 К началу страницы 
+ Ответить 
мисс_граффити
сообщение 6.01.2007 17:54
Сообщение #4


просто человек
******

Группа: Модераторы
Сообщений: 3 641
Пол: Женский
Реальное имя: Юлия

Репутация: -  55  +


двусвязный НЕкольцевой (линейный) понимаешь, как делается?
то есть в FAQ он есть... но ты - понимаешь?
если да, остается два указателя поменять: с первого элемента должен идти на последний, а с последнего - на первый (а в линейном там nil).


--------------------
Все содержимое данного сообщения (кроме цитат) является моим личным скромным мнением и на статус истины в высшей инстанции не претендует.
На вопросы по программированию, физике, математике и т.д. в аське и личке не отвечаю. Даже "один-единственный раз" в виде исключения!
 Оффлайн  Профиль  PM 
 К началу страницы 
+ Ответить 
User88
сообщение 6.01.2007 21:43
Сообщение #5





Группа: Пользователи
Сообщений: 5
Пол: Мужской
Реальное имя: Александр

Репутация: -  0  +


То есть процедура добавления элемента в список должна выглядеть так?

Procedure Add(X : Telem; Var L : TList);
Var P : TList;
L1:Tlist;
Begin
if L=nil then
begin
L:=New(TList);
L^.Next:=L;
L^.Prev:=L;
L^.Data:=X;
end else
begin
P:=New(TList);
P^.Data:=X;
P^.Next:=L^.Next;
L^.Next^.Prev:=P;
P^.Prev:=L;
L^.Next:=P;
end;
End;


М
Теги не забываем...
мисс_граффити



Сообщение отредактировано: мисс_граффити - 6.01.2007 22:18
 Оффлайн  Профиль  PM 
 К началу страницы 
+ Ответить 
volvo
сообщение 6.01.2007 22:10
Сообщение #6


Гость






не совсем... Ты запутался, по-моему, с указателями... Вот так:
Procedure Add(X : Telem; Var L : TList);
Var
P : TList;
Begin
if L=nil then begin
L:=New(TList);
L^.Next:=L;
L^.Prev:=L;
L^.Data:=X;
end
else begin
P:=New(TList);
P^.Data:=X;
P^.prev := L^.prev; { <--- Предыдущее для вновь добавленного значения }
P^.next := L; { <--- Следующее для вновь добавленного - всегда начало списка }
L^.prev^.next := P; { <--- Обновляем "бывший" последний элемент }
L^.prev := P; { <--- Предыдущий для первого элемента }
end;
End;
 К началу страницы 
+ Ответить 
User88
сообщение 7.01.2007 10:32
Сообщение #7





Группа: Пользователи
Сообщений: 5
Пол: Мужской
Реальное имя: Александр

Репутация: -  0  +


Понял, спасибо!
 Оффлайн  Профиль  PM 
 К началу страницы 
+ Ответить 

 Ответить  Открыть новую тему 
1 чел. читают эту тему (гостей: 1, скрытых пользователей: 0)
Пользователей: 0

 



- Текстовая версия 20.07.2025 2:19
Хостинг предоставлен компанией "Веб Сервис Центр" при поддержке компании "ДокЛаб"