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

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

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

 
 Ответить  Открыть новую тему 
> Не удаляется первый элемент односвязного списка.
сообщение
Сообщение #1


Новичок
*

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

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


Не удаляется первый элемент односвязного списка. Немогу понять в чем проблема. Подскажите, буду очень благодарен.


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 -
 Оффлайн  Профиль  PM 
 К началу страницы 
+ Ответить 
сообщение
Сообщение #2


Знаток
****

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

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


Ты уверен, что удаляемый элемент (q) имеет ключ равный Num?
          q:=t^.Next;        <------- Вот в этом месте
t^.Next := q^.Next;
Dispose(q);
 Оффлайн  Профиль  PM 
 К началу страницы 
+ Ответить 
сообщение
Сообщение #3


Новичок
*

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

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


Цитата(Федосеев Павел @ 29.04.2012 22:12) *

Ты уверен, что удаляемый элемент (q) имеет ключ равный Num?
          q:=t^.Next;        <------- Вот в этом месте
t^.Next := q^.Next;
Dispose(q);



Когда первую запись удаляешь, зацикливание идет. Какой нить пример бы мне. А то я в списках слабоват пока что
 Оффлайн  Профиль  PM 
 К началу страницы 
+ Ответить 
сообщение
Сообщение #4


Знаток
****

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

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


для начала напиши процедуру без учёта особенности первого элемента.
А затем улучши - проверь, если это 1-й элемент (т.е. lst указывает на него) - например по ключу, тогда меняй и lst.
-------------------
Я вспомнил. Есть красивая реализация. Вместо такого удаления - просто копируешь в текущий t^(который хотел удалить) все значения из следующего t^.Next (если он не NIL). А потом следующий и удаляешь. Так сохраняется целостность структуры списка. Смотри пример в нашем FAQ."http://forum.pascal.net.ru/index.php?showtopic=2706"
 Оффлайн  Профиль  PM 
 К началу страницы 
+ Ответить 
сообщение
Сообщение #5


Новичок
*

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

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


Спасибо большое. Буду смотреть.
 Оффлайн  Профиль  PM 
 К началу страницы 
+ Ответить 

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

 





- Текстовая версия 22.05.2024 13:54
500Gb HDD, 6Gb RAM, 2 Cores, 7 EUR в месяц — такие хостинги правда бывают
Связь с администрацией: bu_gen в домене octagram.name