请问除了用数组,如何在实现一个栈类?pascal 有指针么? 直接可以继承或者使用TStack。Pascal有指针,不过通常不使用。 解决方案 » 免费领取超大流量手机卡,每月29元包185G流量+100分钟通话, 中国电信官方发货 //-----------------------------------------------------------//// 本单元构建了一个指针链表堆栈的类////// 功能用途: 可以当作理论上无长度限制的堆栈来使用,// 它包含,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. 请教有关刻录方面的资料! 请问触摸屏这样的程序怎么实现?能不能给一个实例!!!(谢谢!) 请问,在DELPHI6中如何才能动态的绑定数据库,谁有这样的例程,能给我一个吗? 关于线程的问题,急急急!! 菜鸟的小问题!! 谁有delphi7的注册码啊? 高手赶紧过来看看啊 ASCII码和字符之间如何相互转换,另外16进制和10进制之间的转换函数,知道的近来一下,在线,急。 如何在执行一段代码时显示模态窗口? 打印预览问题,各位顺便看看 关于 FieldByName 得不解问题 Delphi中众多的*.BPL等如何才能安装到VC,VB中去?敬请指点
//-----------------------------------------------------------
//
// 本单元构建了一个指针链表堆栈的类
//
//
// 功能用途: 可以当作理论上无长度限制的堆栈来使用,
// 它包含,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.