我手上有一本书,讲单向链表的!有一个我觉得有点问题,你看一下!这个是在链表的尾部插入一条数据!
PROCEDURE AppendItem(listhead:link;data:string);
VAR
p,tem:link;
BEGIN
P:=listhead;
while (p^.next<>nil) do p:=p^next;
new(tem)
tem^.date:=date;
tem^.next:=nil;
p^.next:=tem;
END;
在单元的接口部分定义了单向链表
type
link=^node;
node=RECORD
data:string;
next:link;
End;调用上面的过程
procedure TForm1.Button1click(Sender:TObject);
var
InputString:string;
begin
InputString:=InputBox('添加对话框','字符串:',','');
if InputString<>'' then
begin
AppendItem(head,InputString);
DisplayList(head);
end;
end;我的问题是:wihle是个循环语句吧?为什么上面的我感觉象是判断语句呢?while(p^.next<>nil)的意思
是当p^.next不等于空时就继续循环是吧?那后面什么还要再跟上一个p:=p^.next?
tem^.next:=nil;这个赋一个空值给它干什么?
p^.next:=tem;这个又是干什么给指针地址赋值吗?这个语句和上面的语句有什么联系?为什么要把tem^.next后再p^.next:=tem!谢谢了!:)
PROCEDURE AppendItem(listhead:link;data:string);
VAR
p,tem:link;
BEGIN
P:=listhead;
while (p^.next<>nil) do p:=p^next;
new(tem)
tem^.date:=date;
tem^.next:=nil;
p^.next:=tem;
END;
在单元的接口部分定义了单向链表
type
link=^node;
node=RECORD
data:string;
next:link;
End;调用上面的过程
procedure TForm1.Button1click(Sender:TObject);
var
InputString:string;
begin
InputString:=InputBox('添加对话框','字符串:',','');
if InputString<>'' then
begin
AppendItem(head,InputString);
DisplayList(head);
end;
end;我的问题是:wihle是个循环语句吧?为什么上面的我感觉象是判断语句呢?while(p^.next<>nil)的意思
是当p^.next不等于空时就继续循环是吧?那后面什么还要再跟上一个p:=p^.next?
tem^.next:=nil;这个赋一个空值给它干什么?
p^.next:=tem;这个又是干什么给指针地址赋值吗?这个语句和上面的语句有什么联系?为什么要把tem^.next后再p^.next:=tem!谢谢了!:)
tem^.next := nil是使链表在这个节点结束
p^.next := tem;是使l链表的末节点指向tem;