Вот я сделал процедуру:
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, то он место удаления элемента последнее инф.поле очистит, первое заменит на крякозябры из цифр. В чём проблема?
Это исходная допустим табличка:
----------------------------------------------------------
№ * Табельный номер * Фамилия
------------------------------------------------------------
1 * 111 * AAA
2 * 222 * BBB
3 * 333 * CCC
4 * 555 * GGG
А вот что получаем на выходе:
№ * Табельный номер * Фамилия
------------------------------------------------------------
1 * 23616 *
2 * 222 * BBB
3 * 333 * CCC
4 * 555 * GGG