List 如何删除链表的第一个元素?
此过程List 如何删除链表的第一个元素?,list,delphi,linked-list,pascal,List,Delphi,Linked List,Pascal,此过程Supprimerpremier应删除链表的第一个元素,方法是将头指针移动到第二个元素,然后处理第一个似乎不起作用的元素 我不知道为什么它不起作用;当我用程序显示列表时,列表仍然有3个元素 提前感谢=) 程序TP1; 使用阴极射线管; 类型 T=^TT; TT=记录//声明我的列表 s:字符串; n:整数; nxt:T; 结束; 变量 x、 p:T; 程序供应商(L:T);//删除列表中第一个元素的过程 变量 x:T; iptr:^整数; y:^字; 开始 x:=L; L:=L^.nxt;
Supprimerpremier
应删除链表的第一个元素,方法是将头指针移动到第二个元素,然后处理第一个似乎不起作用的元素
我不知道为什么它不起作用;当我用程序显示列表时,列表仍然有3个元素
提前感谢=)
程序TP1;
使用阴极射线管;
类型
T=^TT;
TT=记录//声明我的列表
s:字符串;
n:整数;
nxt:T;
结束;
变量
x、 p:T;
程序供应商(L:T);//删除列表中第一个元素的过程
变量
x:T;
iptr:^整数;
y:^字;
开始
x:=L;
L:=L^.nxt;
处置(x);
结束;
程序附加器(L:T)//打印列表
变量
x:T;
开始
x:=L;
而(x^.nxt Nil)Do//
开始
书面语;
书面语;
书面文件(x^.s);
书面文件(x^.n);
x:=x^.nxt;
结束;
书面语;
书面语;
书面文件(x^.s);
书面文件(x^.n);
结束;
//
开始
新的(p);
p^.n:=1111;
p^.s:=“iam是第一个元素”;
新的(p^.nxt);
p^.nxt^.n:=222;
p^.nxt^.s:='iam是第二个元素';
新的(p^.nxt^.nxt);;
p^.nxt^.nxt^.n:=778;
p^.nxt^.nxt^.s:='iam是第三个元素';
p^.nxt^.nxt^.nxt:=Nil;
补充组(p)//
阿菲舍尔(p);
结束;
您正在通过值传递L
参数,因此过程将接收调用者传入的任何变量的副本(即p
)。过程对L
的值所做的任何修改(即L:=L^.nxt;
语句)都不会反映回调用方的变量
您需要通过var reference传递L
参数,例如:
Procedure supplierpremier(变量L:T)代码>另请参见和。请编写一个向列表尾部添加值的过程。看到p^.nxt^.nxt^.n=,我的眼睛很痛。。。
Program TP1;
Uses crt ;
Type
T = ^TT;
TT = Record //declaring my list
s: String;
n: Integer;
nxt: T;
End;
Var
x,p : T ;
Procedure Supprimerpremier (L : T); // procedure to delete the first element of my list
Var
x: T;
iptr: ^integer;
y: ^word;
Begin
x:=L;
L:=L^.nxt;
Dispose(x);
End;
Procedure Afficher (L :T); //prints the list
Var
x: T;
Begin
x := L;
While ( x^.nxt<> Nil ) Do //
Begin
Writeln;
Writeln;
Writeln(x^.s);
Writeln(x^.n);
x := x^.nxt;
End;
Writeln;
Writeln;
Writeln(x^.s);
Writeln(x^.n);
End;
//
Begin
new(p);
p^.n := 1111;
p^.s := 'iam the first element';
new(p^.nxt);
p^.nxt^.n := 222;
p^.nxt^.s := 'iam the second element';
new(p^.nxt^.nxt);
p^.nxt^.nxt^.n := 778;
p^.nxt^.nxt^.s := 'iam the third element ';
p^.nxt^.nxt^.nxt := Nil;
Supprimerpremier (p); //
Afficher (p);
end;