在线时间:8:00-16:00
迪恩网络APP
随时随地掌握行业动态
扫描二维码
关注迪恩网络微信公众号
TOrderedList、TStack、TQueue 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)。下面是这两个类的方法的使用说明:
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的对象引用,而不是简单的指针。 |
2023-10-27
2022-08-15
2022-08-17
2022-09-23
2022-08-13
请发表评论