Помощь - Поиск - Пользователи - Календарь
Полная версия: динамические структуры(списки)
Форум «Всё о Паскале» > Pascal, Object Pascal > Задачи
Renbo
Необходимо исключить элемент, стоящий перед i-тым, тоесть как я понял делаем запрос на номер элемента, а потом удаляем перед ним стоящий, так?

Вот я сделал процедуру:


procedure del_i_1_elem(First:EL);
VAR
  T,Q,R:EL;
  K,N:integer;
  i:integer;
Begin
  N:=Count_el(First);
  writeln('Введите i:');
  readln(i);
  IF N=1 then  {esli y nas v spiske 1 element}
        begin
          writeln('У вас только 1 элемент, удаление предыдущего не возможно');
          readkey;
          exit;
        end;
  IF (i < 1) or (i > N) then
    begin
      writeln('i задано некорректно');
      readkey;
      exit;
    end;
  IF i=2 then           {удаление первого элемента списка}
    begin
      p:=First;
      First:=First^.Next;
      dispose(p);
    end
  ELSE                  {удаление из середины}
    begin
      T:=First;
      Q:=Nil;
      K:=1;
      While K < i-1 do
        begin
          inc(K);
          Q:=T;
          T:=T^.Next;
        end;
      R:=T^.Next;
      Q^.Next:=R;
      Dispose(T);
    end;
End;



Вроде бы пашет нормально, только вот если i введём как 2, то он место удаления элемента последнее инф.поле очистит, первое заменит на крякозябры из цифр. В чём проблема? wacko.gif

Это исходная допустим табличка:
----------------------------------------------------------
№ * Табельный номер * Фамилия
------------------------------------------------------------
1 * 111 * AAA
2 * 222 * BBB
3 * 333 * CCC
4 * 555 * GGG


А вот что получаем на выходе:

№ * Табельный номер * Фамилия
------------------------------------------------------------
1 * 23616 *
2 * 222 * BBB
3 * 333 * CCC
4 * 555 * GGG

volvo
Сорри, ты же передаешь First по значению, а при n = 2 значение First меняется, надо передавать по ссылке...
Renbo
Цитата(volvo @ 1.05.2007 19:37) *

Сорри, ты же передаешь First по значению, а при n = 2 значение First меняется, надо передавать по ссылке...



точно, спасиб, исправил, что-то тормозной день сегодня... wacko.gif
Это текстовая версия — только основной контент. Для просмотра полной версии этой страницы, пожалуйста, нажмите сюда.