是指针链表吧?!
首先:链表是一种数据结构(表record,它不是就叫表吗);
其次:这种结构中含有指针;
最后:链表可以在程序运行中动态建立;
链表是由“节点”元素组成的,每个节点都由两部分构成:
(1)数据部分:存放要处理的数据;
(2)指针部分:存放下一个节点的地址,链表就是通过它建立联系的!
下面是个简单的链表例子:
Pstruct=^Tstruct;
type
Tstruct=packed record//定义一个数据结构
data:integer;//数据部分;
next
struct;//指针部分,指向定义的数据类型,就是这个结构自己。
end;
下面我们在建立三个数据a1,a2,a3;
var a1,a2,a3:Tstruct;
建立数据间的联系:
a1.next:=@a2;//数据a1的指针成员next就指向数据a2了,状态如下图(图中是3个数据):
数据a1 数据a2 数据3
|---------------| |---------------| |---------------|
| data | |------->| data | |------->| data |
|---------------| | |---------------| | |---------------|
| next |--------| | next |-------| | next |
|---------------| |---------------| |---------------|
如何建立a2与a3的联系呢?简单
a2.next:=@a3;
或者:
a1.next^.next:=@a3;
再多呢?还是差不多:
a1.next^.next^....next:=@an;
将数据88存到a3的data中,可以用下面任何一种方法:
(1) a3.data:=88;
(2) a2.next^.data:=88;
(3) a1.next^.next^.data:=88;
看它们的连接方式是不是很像一条链子?名字大概就是这样来的吧?!!
链表的结尾标志:
因为没有可以指向的下一个节点了,所以赋值nil给它(如上例):
a3.next:=nil;或
a1.next^.next^.next:=nil;
好了,画图表太难了,累死了,详细的情况你再回去看看书,品味品味吧