近来有好多同学问到在delphi中使用链表的问题,在这里我就简单来说说吧.
对C语言版的链表大家都很熟识了,我们就先来看看C关于链表的定义,这里以队列为例:
typedef struct Qnode{ //定义数据元素类型
int data;
struct Qnode *next;
}Qnode,*QueuePtr;
typedef struct{ //定义队列
QueuePtr front;
QueuePtr rear;
}LinkQueue;
这里我们只要把握一点就行: next,front,rear三个变量都是Qnode类指针.QueuePtr front等价于Qnode *front。
下面看看delphi中的定义:
type
link=^node; //定义链表数据类型
node=record
data:string;
next:link;
end;
type
LinkQueue=record //定义队列(具有头指针和尾指针)
front:link;
rear:link;
end;
这里的定义和C的定义在本质上的一样的,只是表现形式有点区别而已,link=^node表明link是node类指针,在理解上我们可能这样定义:
type
//定义链表数据类型
node=record
data:string;
next:^node;//这里把link换成了^node
end;
这个只是理解上的定义,编译时会产生如下错误的:
[错误] Unit1.pas(28): Type 'node'
Delphi链表问题(队列)
最新推荐文章于 2020-11-20 14:18:31 发布
本文介绍了如何在Delphi中实现链表,特别是队列的数据结构。通过对比C语言中的链表定义,解释了Delphi中的链表记录类型和指针的使用,并提供了一个简单的队列操作示例,包括向队列中添加元素、删除元素和显示队列内容的函数。此外,还提及了Delphi中内置的TList、TQueue和TStack链表类的便利性。
摘要由CSDN通过智能技术生成