Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/list/4.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
List 如何删除链表的第一个元素?_List_Delphi_Linked List_Pascal - Fatal编程技术网

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;