Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

Вернуться   Форум программистов > Delphi программирование > Паскаль, Turbo Pascal, PascalABC.NET
Регистрация

Восстановить пароль
Повторная активизация e-mail

Купить рекламу на форуме - 42 тыс руб за месяц

Ответ
 
Опции темы Поиск в этой теме
Старый 04.06.2014, 00:38   #1
black_bullet
 
Регистрация: 14.04.2014
Сообщений: 5
По умолчанию Списки

Как удалить полностью весь список, одной процедурой?
black_bullet вне форума Ответить с цитированием
Старый 04.06.2014, 00:58   #2
Serge_Bliznykov
Старожил
 
Регистрация: 09.01.2008
Сообщений: 26,229
По умолчанию

если речь идёт о связном списке - то никак!
Нужно в цикле перебирать элементы списка и освобождать занимаемую память!
Serge_Bliznykov вне форума Ответить с цитированием
Старый 04.06.2014, 09:47   #3
Stilet
Белик Виталий :)
Старожил
 
Аватар для Stilet
 
Регистрация: 23.07.2007
Сообщений: 57,097
По умолчанию

Цитата:
если речь идёт о связном списке - то никак!
Обрати внимание на подвох:
Цитата:
удалить полностью весь список, одной процедурой
Т.е. если описать процедуру удаления с циклом, а ее вызвать из другой процедуры, то получается что удаление произойдет полностью в рамках одной! процедуры
I'm learning to live...
Stilet вне форума Ответить с цитированием
Старый 04.06.2014, 10:24   #4
Serge_Bliznykov
Старожил
 
Регистрация: 09.01.2008
Сообщений: 26,229
По умолчанию

Цитата:
Сообщение от Stilet Посмотреть сообщение
Обрати внимание на подвох:

Т.е. если описать процедуру удаления с циклом, а ее вызвать из другой процедуры, то получается что удаление произойдет полностью в рамках одной! процедуры
Виталий, я об этом подумал. Но решил, что раз автор темы задаёт такой вопрос, то он подразумевает "одной процедурой" == "одной командой", имея в виду какую-то встроенную (готовую) процедуру.

Хотя, по сути, полностью с Вами согласен!
Serge_Bliznykov вне форума Ответить с цитированием
Старый 04.06.2014, 11:13   #5
Stilet
Белик Виталий :)
Старожил
 
Аватар для Stilet
 
Регистрация: 23.07.2007
Сообщений: 57,097
По умолчанию

Цитата:
имея в виду какую-то встроенную (готовую) процедуру.
Ну с таким успехом можно и придраться к методу Clear в TList.
Вообще-то мне кажется что ТС просит чтоб ему написали процедуру освобождения списка...
I'm learning to live...
Stilet вне форума Ответить с цитированием
Старый 04.06.2014, 13:26   #6
Serge_Bliznykov
Старожил
 
Регистрация: 09.01.2008
Сообщений: 26,229
По умолчанию

Цитата:
Сообщение от Stilet Посмотреть сообщение
Ну с таким успехом можно и придраться к методу Clear в TList.
Вообще-то мне кажется что ТС просит чтоб ему написали процедуру освобождения списка...
показал бы свой код описания/заполнения списка, может и написали бы ему такую процедуру.
Я думаю, что у него вообще ничего нет, а задание(вопрос) есть..
Вот он и не знает, что с этим всем делать...
Serge_Bliznykov вне форума Ответить с цитированием
Старый 05.06.2014, 22:01   #7
ViktorR
Старожил
 
Регистрация: 23.10.2010
Сообщений: 2,309
По умолчанию

Это не сложно.
Надо написать процедуру, которая будет работать по следующему алгоритму:
1. Beg - указатель на начало списка, p - вспомогательный указатель,
pp - указатель, который хранит связку на следующий элемент списка (описывается в элементе списка).
Код:
While Beg <> Nil do
begin
   p := Beg;
   Beg := Beg^.pp;
   dispose(p);
end;
Ecё ...


Как-то так, ...
Как-то так, ...
ViktorR вне форума Ответить с цитированием
Ответ


Купить рекламу на форуме - 42 тыс руб за месяц



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
списки jekie182 Паскаль, Turbo Pascal, PascalABC.NET 0 05.05.2012 09:29
(C++) списки Troi666 Помощь студентам 6 13.05.2009 00:47
Списки C++ Katya Melody Помощь студентам 0 07.05.2009 23:32
Списки? Chainic Microsoft Office Excel 13 06.05.2009 22:53