我手上有一本书,讲单向链表的!有一个我觉得有点问题,你看一下!这个是在链表的尾部插入一条数据!
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!谢谢了!:)
解决方案 »
- socket斷開連接的問題
- 郁闷,为什么在SQL SERVER 中定义为DataTime类型字段的表在Delphi中更新记录时出错
- 计算同步显示问题,请大家帮忙
- 在数据库编程中遇到的问题汇总,请高手解答,新手学习。
- 在delphi里调试的时候,按什么键可以跟踪到 自定义函数里面和自定义过程里面
- 关于word和excel引用的问题(新手问题)
- 怎样仅由一个角x的sin(x)值和cos(x)值推算出这个角的arccos(x)的值呀
- 怎样检测一个窗体从打开到关闭其中的内容有没改变?
- delphi dataset not in edit or insert mode错误
- 做一个类似于wingate之类的代理服务器需要那些知识,哪里有参考
- 为什么用ADOQuery删除完全相同的几个记录中的一个时报错,为什么?
- select问题
tem^.next:=nil;//保证节点中的指针为空
把节点增加在链表上
tem^.next:=nil 表示这是整个链表的结尾。
p^.next:=tem; 是将新增加的结点和当前链表的结尾连接起来。
{
tem^.next:=nil;
p^.next:=tem;} 这两句的顺序在这个是无所谓的。
仔细看看书上的解释。