procedure DeleteItem(Num:integer);
var q:list;
begin
t:=lst;
while t^.Key <> Num do t:= t^.Next;
q:=t^.Next;
t^.Next := q^.Next;
Dispose(q);
end;
Сообщение отредактировано: alex457 -
1. Заголовок темы должен быть информативным. В противном случае тема удаляется ...
2. Все тексты программ должны помещаться в теги [code=pas] ... [/code], либо быть опубликованы на нашем PasteBin в режиме вечного хранения.
3. Прежде чем задавать вопрос, см. "FAQ", если там не нашли ответа, воспользуйтесь ПОИСКОМ, возможно такую задачу уже решали!
4. Не предлагайте свои решения на других языках, кроме Паскаля (исключение - только с согласия модератора).
5. НЕ используйте форум для личного общения, все что не относится к обсуждению темы - на PM!
6. Одна тема - один вопрос (задача)
7. Проверяйте программы перед тем, как разместить их на форуме!!!
8. Спрашивайте и отвечайте четко и по существу!!!
Не удаляется первый элемент односвязного списка. |
alex457 |
Сообщение
#1
|
Новичок Группа: Пользователи Сообщений: 15 Пол: Мужской Реальное имя: alex Репутация: 0 |
Не удаляется первый элемент односвязного списка. Немогу понять в чем проблема. Подскажите, буду очень благодарен.
Сообщение отредактировано: alex457 - |
Федосеев Павел |
Сообщение
#2
|
Знаток Группа: Пользователи Сообщений: 481 Пол: Мужской Реальное имя: Федосеев Павел Репутация: 9 |
Ты уверен, что удаляемый элемент (q) имеет ключ равный Num?
q:=t^.Next; <------- Вот в этом месте |
alex457 |
Сообщение
#3
|
Новичок Группа: Пользователи Сообщений: 15 Пол: Мужской Реальное имя: alex Репутация: 0 |
|
Федосеев Павел |
Сообщение
#4
|
Знаток Группа: Пользователи Сообщений: 481 Пол: Мужской Реальное имя: Федосеев Павел Репутация: 9 |
для начала напиши процедуру без учёта особенности первого элемента.
А затем улучши - проверь, если это 1-й элемент (т.е. lst указывает на него) - например по ключу, тогда меняй и lst. ------------------- Я вспомнил. Есть красивая реализация. Вместо такого удаления - просто копируешь в текущий t^(который хотел удалить) все значения из следующего t^.Next (если он не NIL). А потом следующий и удаляешь. Так сохраняется целостность структуры списка. Смотри пример в нашем FAQ."http://forum.pascal.net.ru/index.php?showtopic=2706" |
alex457 |
Сообщение
#5
|
Новичок Группа: Пользователи Сообщений: 15 Пол: Мужской Реальное имя: alex Репутация: 0 |
Спасибо большое. Буду смотреть.
|
Текстовая версия | 22.05.2024 13:54 |