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

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

Вернуться   Форум программистов > IT форум > Помощь студентам
Регистрация

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

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

Ответ
 
Опции темы Поиск в этой теме
Старый 10.04.2010, 14:47   #1
yagluboko
Новичок
Джуниор
 
Регистрация: 13.01.2010
Сообщений: 2
По умолчанию удаление элемента из списка

Пожалуйста, помогите, никак не могу написать процедуру, то тут то там какой- то глюк выдаёт:

Код:
procedure TForm1.Del(d: string; var Poin: PNode);
var
  PoinDel, r: PNode;
begin
  if Poin^.Info.Name = d then
  begin
    PoinDel := Poin;
    Poin :=  Poin^.Next;
    Dispose (PoinDel);
  end else
  begin
    q := Poin^.Next;
    r := Poin;
    while (q^.Next <> nil) do
    begin
      if q^.Info.Name = d then
      begin
        PoinDel := q^.Next;
        q^.Info := PoinDel^.Info;
        q^.Next := PoinDel^.Next;
        Dispose (PoinDel);
        Break;
      end else
        r := q;
        q :=  q^.Next;
    end;
    if q^.Next = nil then
    begin
      r^.Next := q^.Next;
      Dispose (q);
    end;
  end;
end;
Работает только еслди данный элемент в списке первый, и то в StringGrid
остальной список записывает, а в файл нет. Если же ничего не удалять, то в файл весь список записывается и потом читается корректно
yagluboko вне форума Ответить с цитированием
Старый 10.04.2010, 14:54   #2
Grag
А может и не...
Участник клуба
 
Аватар для Grag
 
Регистрация: 27.03.2010
Сообщений: 1,269
По умолчанию

Вот мои процедуры создания, добавления и удаления узлов в двусвязном списке...
Код:
Type
   pEl= ^Element;
   Element= record
              Dat:byte;
              Next:pEl;
              Prev:pEl
            end;
Var
   trmB,trmE,ptrTop:pEl;
   fl:text;
   Number,index,Deleting:integer;
Procedure CreatUz(var trmB,trmE:pEl; N:byte);
Begin
    New(trmB);
    trmB^.Next:=NIL;
    trmB^.Prev:=NIL;
    trmB^.Dat:=N;
    trmE:=trmB
End;
Procedure AddUz(var trmE:pEl; N:byte);
Var
    prom:pEl;
Begin
    new(prom);
    prom^.Dat:=N;
    prom^.Next:=nil;
    prom^.Prev:=trmE;
    trmE^.Next:=prom;
    trmE:=prom
End;
Procedure DelUz(var ptrTop:pEl);
Begin
    ptrTop^.Prev^.Next:=ptrTop^.Next;
    ptrTop^.Next^.Prev:=ptrTop^.Prev;
    dispose(ptrTop)
End;
Перемешивай дело с бездельем и не сойдешь с ума...
Grag вне форума Ответить с цитированием
Ответ


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



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Турбо Паскаль 7.0 Удаление из списка элемента sir.andrey Помощь студентам 12 02.03.2010 17:08
удаление элемента из списка aurora_87 Общие вопросы C/C++ 1 18.06.2009 14:02
Удаление элемента из массива Ozerich PHP 10 14.02.2009 02:21
Ошибка при создании головного элемента двусвязного списка Дамир Помощь студентам 1 16.11.2008 16:09