*Delphi容器类之---TOrderedList、TStack、TQueue、TObjectStack、TObjectQueue
2015-07-29 22:14
555 查看
TOrderedList、TStack、TQueue
Contnrs单元还定义了其他三个类:TOrderedList、TStack、TQueue
TOrderedList
TStack
TQueue
要注意,虽然TOrderedList并不是从TList继承的,但是它在内部的实现时,使用了TList来存储指针。另外注意TOrderedList类的 PushItem过程是一个抽象过程,所以我们无法实例化TOrderList 类,而应该从TOrderList继承新的类,并实现抽象的PushItem 方法。
因此TStack、TQueue继承自TOrderedList,所以TStack、TQueue的指针也是存在其内部的TList中的。
TStack和TQueue正是实现了PushItem 抽象方法的类,我们可以实例化TStack和TQueue类作为后进先出的堆栈(LIFO)和先进先出的队列(FIFO)。下面是这两个类的方法的使用说明:
Count 返回列表中的项目数。
AtLeast 可以用来检检查链表的大小,判断当前列表中的指针数目是否大于传递的参数值,如果为True便是列表中的项目数大于传来的参数。
Push 对于TStack类,Push方法将指针添加到链表的最后,对于TQueue类,Push方法则将指针插入到链表的开始。
Pop 返回链表的末端指针,并将其从链表中删除。
Peek 返回链表的末端指针,但是不将其从链表中删除。
TObjectStack、TObjectQueue
Contnrs单元中最后两个类是TObjectStack和TObjectQueue类,类的定义如下
TObjectStack
TObjectQueue
这两个类只是TStack和TQueue 类的简单扩展,在链表中保存的是TObject的对象引用,而不是简单的指针。
Contnrs单元还定义了其他三个类:TOrderedList、TStack、TQueue
TOrderedList
TOrderedList = class(TObject) private FList: TList; protected procedure PushItem(AItem: Pointer); virtual; abstract; ... public function Count: Integer; function AtLeast(ACount: Integer): Boolean; procedure Push(AItem: Pointer); function Pop: Pointer; function Peek: Pointer; end;
TStack
TStack = class(TOrderedList) protected procedure PushItem(AItem: Pointer); override; end;
TQueue
TQueue = class(TOrderedList) protected procedure PushItem(AItem: Pointer); override; end;
要注意,虽然TOrderedList并不是从TList继承的,但是它在内部的实现时,使用了TList来存储指针。另外注意TOrderedList类的 PushItem过程是一个抽象过程,所以我们无法实例化TOrderList 类,而应该从TOrderList继承新的类,并实现抽象的PushItem 方法。
因此TStack、TQueue继承自TOrderedList,所以TStack、TQueue的指针也是存在其内部的TList中的。
TStack和TQueue正是实现了PushItem 抽象方法的类,我们可以实例化TStack和TQueue类作为后进先出的堆栈(LIFO)和先进先出的队列(FIFO)。下面是这两个类的方法的使用说明:
Count 返回列表中的项目数。
AtLeast 可以用来检检查链表的大小,判断当前列表中的指针数目是否大于传递的参数值,如果为True便是列表中的项目数大于传来的参数。
Push 对于TStack类,Push方法将指针添加到链表的最后,对于TQueue类,Push方法则将指针插入到链表的开始。
Pop 返回链表的末端指针,并将其从链表中删除。
Peek 返回链表的末端指针,但是不将其从链表中删除。
TObjectStack、TObjectQueue
Contnrs单元中最后两个类是TObjectStack和TObjectQueue类,类的定义如下
TObjectStack
TObjectStack = class(TStack) public procedure Push(AObject: TObject); function Pop: TObject; function Peek: TObject; end;
TObjectQueue
TObjectQueue = class(TQueue) public procedure Push(AObject: TObject); function Pop: TObject; function Peek: TObject; end;
这两个类只是TStack和TQueue 类的简单扩展,在链表中保存的是TObject的对象引用,而不是简单的指针。
相关文章推荐
- *Delphi容器类之---TList、TObjectList、TComponentList、TClassList
- Object Detection----- Discriminatively Trained Part Based Models
- [objective-c]推送警告处理
- HALCON算子函数——Chapter 13 : Object
- “LINK : fatal error L1093: start_test.obj : object file not found”报错解决
- [objective-c]编译出错 -- NS_REQUIRES_NIL_TERMINATION Error
- 黑马程序员--iOS--Objective-C基础 (面向对象)
- java Object类中常用的方法
- 2015 Objective-C 新特性
- ios coredata NSManagedObject 的 objectID
- 基于json-lib.jar包 创建JSONObject的四个常用方法
- Object-C 字符串
- JSONObject/JSONArray
- JAVA DAO(Data Access Object)的个人总结
- object入门(转)
- [objective-c]使用Lumberjack未定义
- *Delphi容器类之---TList、TStringList、TObjectList,以及一个例程的代码分析
- JSONObject与JSONArray的使用
- JSONObject JSONArray
- iOS开发 Objective-C中@property的属性详解