请问如何定义一个链表? http://www.csdn.net/expert/topic/183/183275.shtmhttp://www.csdn.net/expert/topic/97/97998.shtm 解决方案 » 免费领取超大流量手机卡,每月29元包185G流量+100分钟通话, 中国电信官方发货 现成的为什么不用 ?TList?TThreadList?TObjectList?TComponentList? 同意Musicwind(吾爱是Yaya!)没必要自己写了 再添一笔:贴一下!//-----------------------------------------------------------//// 本单元构建了一个指针链表堆栈的类////// 功能用途: 可以当作理论上无长度限制的堆栈来使用,// 它包含,PUSH、POP、TOP、EMPTY基本等方法。// 构建方式: 使用的是单链表结构,建立链表堆栈。////-----------------------------------------------------------unit Unit_PStack;interfacetype//记录结构声明>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>> //指针堆栈的元素记录结构的指针 TesStackRecordP=^TesStackRecord; //指针堆栈的元素记录结构 TesStackRecord=record //记录的数据 Data:char; //下一个记录的指针 Next:TesStackRecordP; end;//类定义>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>> //指针链表堆栈的类的声明 TesPLinklistStack = class(TObject) private //堆栈链表的头节点 FHead:TesStackRecord; protected // public //构造函数 constructor Create; //入栈 procedure PUSH(AData:char); //出栈 procedure POP; //取栈顶值 function TOP:char; //检查堆栈是否为空 function IsEmpty:Boolean; //清空堆栈 procedure EMPTY; //析构函数 destructor Destroy;override; end;implementation//构造函数constructor TesPLinklistStack.Create;begin FHead.Next:=nil; end;procedure TesPLinklistStack.PUSH(AData:char);var s:TesStackRecordP;begin New(s); s^.Data:=AData; s^.Next:=FHead.Next; FHead.Next:=s;end;//出栈procedure TesPLinklistStack.POP;var s:TesStackRecordP;begin if IsEmpty then Exit; s:=FHead.Next; FHead.Next:=s^.Next; Dispose(s);end;//取栈顶值function TesPLinklistStack.TOP:char;begin if IsEmpty then begin Result:=chr(0); Exit; end; Result:=FHead.Next^.Data;end;//检查堆栈是否为空function TesPLinklistStack.IsEmpty:Boolean;begin Result:=(FHead.Next=nil);end;//清空堆栈procedure TesPLinklistStack.EMPTY;var p,s:TesStackRecordP;begin if IsEmpty then Exit; p:=FHead.Next; while p<>nil do begin s:=p; p:=p^.Next; Dispose(s); end; FHead.Next:=nil;end;//析构函数destructor TesPLinklistStack.Destroy;begin EMPTY;end;end. 如何让鼠标放在TreeView的不同节点提示不同的信息? VB转DELPHI不习惯请教一个小问题,过程怎么调用? adoquery和combobox奇怪问题(难度应该不是很大,解决给分,在线等待) 用delphi关于财务的日结平衡和月平衡怎么实现,谢谢各位老师了。 关于if……else转向问题,有原码,帮帮忙 神啊,救救我吧(附源代码,在线等待~) 至今为之无法解决的问题: DLL返回TPicture delphi调用java开发的webservice的问题 RZ控件包问题! 在同一台机子上的两个应用程序,如何方便的通讯呢? 关于开发平台的问题? 关于控件的问题!很菜的问题!
TList?TThreadList?TObjectList?TComponentList?
//
// 本单元构建了一个指针链表堆栈的类
//
//
// 功能用途: 可以当作理论上无长度限制的堆栈来使用,
// 它包含,PUSH、POP、TOP、EMPTY基本等方法。
// 构建方式: 使用的是单链表结构,建立链表堆栈。
//
//-----------------------------------------------------------unit Unit_PStack;interfacetype//记录结构声明>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>> //指针堆栈的元素记录结构的指针
TesStackRecordP=^TesStackRecord;
//指针堆栈的元素记录结构
TesStackRecord=record
//记录的数据
Data:char;
//下一个记录的指针
Next:TesStackRecordP;
end;//类定义>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>> //指针链表堆栈的类的声明
TesPLinklistStack = class(TObject)
private
//堆栈链表的头节点
FHead:TesStackRecord;
protected
//
public
//构造函数
constructor Create;
//入栈
procedure PUSH(AData:char);
//出栈
procedure POP;
//取栈顶值
function TOP:char;
//检查堆栈是否为空
function IsEmpty:Boolean;
//清空堆栈
procedure EMPTY;
//析构函数
destructor Destroy;override;
end;implementation//构造函数
constructor TesPLinklistStack.Create;
begin
FHead.Next:=nil;
end;procedure TesPLinklistStack.PUSH(AData:char);
var
s:TesStackRecordP;
begin
New(s);
s^.Data:=AData;
s^.Next:=FHead.Next;
FHead.Next:=s;
end;//出栈
procedure TesPLinklistStack.POP;
var
s:TesStackRecordP;
begin
if IsEmpty then Exit;
s:=FHead.Next;
FHead.Next:=s^.Next;
Dispose(s);
end;//取栈顶值
function TesPLinklistStack.TOP:char;
begin
if IsEmpty then
begin
Result:=chr(0); Exit;
end;
Result:=FHead.Next^.Data;
end;//检查堆栈是否为空
function TesPLinklistStack.IsEmpty:Boolean;
begin
Result:=(FHead.Next=nil);
end;//清空堆栈
procedure TesPLinklistStack.EMPTY;
var
p,s:TesStackRecordP;
begin
if IsEmpty then Exit;
p:=FHead.Next;
while p<>nil do
begin
s:=p;
p:=p^.Next;
Dispose(s);
end;
FHead.Next:=nil;
end;//析构函数
destructor TesPLinklistStack.Destroy;
begin
EMPTY;
end;end.