Цитата(IUnknown @ 20.03.2012 12:36)

Можно посмотреть на окончательный вариант программы? Конкретно - уточни, что именно по-твоему должна делать процедура Remove? И как находится тот элемент, который в Remove передается? И как, наконец, вызывается эта самая Remove...
Procedure Remove(Var x:PNode);
Var r:PNode;
Begin
r:=x^.next;
If r<>nil Then Begin
x^:=r^;
Dispose®;
End
Else
DelLast(x);
End;
В программе:
WriteLn('Удаление текущего элемента x линейного списка:');
Remove(u);
PrintList(u);
Я думаю, что нужно ввести еще переменную, где будем указывать какой именно элемент в списке, и затем он его будет удалять.
Добавлено через 6 мин. Вот вся моя программа:
Program Labal1_2;
Uses crt;
Type PNode=^Node;
Node=Record
data:Integer;
next:PNode;
End;
Var u,y:PNode;
n,k:Integer;
Procedure AddFirst(k:Integer; var p:PNode);
var t:PNode;
Begin
New(t);
t^.data:=k;
t^.next:=p;
p:=t;
End;
Procedure InputList(var p:PNode; n:Integer);
Var i,k:Integer;
Begin
For i:=1 To n Do Begin
Write('Введите k:');
ReadLn(k);
AddFirst(k,p)
End;
End;
Procedure PrintList(p:PNode);
Begin while p<>nil Do Begin
Write(p^.data, ' ');
p:=p^.next;
End;
WriteLn;
End;
Procedure DelFirst(var p:PNode);
Var t:PNode;
Begin
t:=p;
p:=p^.next;
dispose(t);
End;
Procedure DelNext(x:PNode);
Var t:PNode;
Begin
t:=x^.next;
x^.next:=t^.next;
dispose(t);
End;
Procedure DelLast(var x:PNode);
Var q:PNode;
Begin
If x^.next=nil Then DelFirst(x) Else Begin
q:=x;
While q^.next^.next<>nil Do q:=q^.next;
DelNext(q);
End;
End;
Procedure Delete(n:Integer; var p:PNode);
Var i,k:Integer;
Var q:PNode;
Begin
If n=1 Then DelFirst(p) Else Begin
q:=p;
For i:=1 To n-2 Do Begin
If q^.next=nil Then Break Else q:=q^.next;
End;
If q^.next<>nil Then DelNext(q) Else WriteLn('Нет столько элеметов в списке');
End;
End;
Procedure Clear(var p:PNode);
Begin
While p<>nil Do DelFirst(p);
End;
Procedure Remove(Var x:PNode);
Var r:PNode;
Begin
r:=x^.next;
If r<>nil Then Begin
x^:=r^;
Dispose®;
End
Else
DelLast(x);
End;
Begin
Clrscr;
WriteLn('Тестирование');
Writeln('Введите количество элементов в списке:');
Read(k);
InputList(u,k);
PrintList(u);
WriteLn('Удаление первого элемента:');
DelFirst(u);
PrintList(u);
WriteLn('Удаление элемента следующего за:');
DelNext(u);
PrintList(u);
WriteLn('Удаление последнего элемента:');
DelLast(u);
PrintList(u);
WriteLn('Удаление текущего элемента x линейного списка:');
Remove(u);
PrintList(u);
WriteLn('Удаление заданного элемента:');
WriteLn('Введите номер элемента');
ReadLn(n);
Delete(n,u);
PrintList(u);
WriteLn('Удаление всего списка:');
Clear(u);
PrintList(u);
ReadLn;
End.