TOrderedList类

 一、TOrderedList类

1.1 1.1 TOrderedList类概述

    TOrderedList类维护了一个可以被有序访问的指针数组;它聚合了TList类,通过TList类对象来实现存储一系列指针并且可以被有序的访问。TOrderedList类

是一个描述列表的抽象类,可以通过派生类来实现它的PushItem方法从而来决定它的被访问的方式。

1.2 1.2 方法

1.2.1     constructor Create;  

     TOrderedList类的构造函数,它调用父类的构造函数,然后创建一个TList类的对象。                                     

1.2.2     destructor Destroy; override;

     TOrderedList类的析构函数,它先释放TList类的对象,然后再调用父类的析构函数。

1.2.3     function Count: Integer;

    该方法返回此TOrderedList类维护的List列表的大小。

1.2.4     function AtLeast(ACount: Integer): Boolean;

    该方法用于核查List的大小,当此类维护的列表大小大于或者等于ACount时返回为True。

1.2.5     function Push(AItem: Pointer): Pointer;

    向List列表中压入一个指针,它调用抽象方法protected PushItem,此方法将在派生类中实现以达到不同次序访问列表的目的。

1.2.6     function Pop: Pointer;

    此方法将返回List列表的最后一个域的指针,并删除此域。

1.2.7     function Peek: Pointer;

    此方法将只返回List列表的最后一个域的指针。

二. 二、TStack类

2.1 2.1 TStack类概述

    TStack类实现了堆栈的数据结构,即是实现了Last-in and First-out访问方式的指针数组;它是由TOrderedList类派生而来。

2.2 2.2 方法

    它实现了父类的PushItem抽象方法,如:                            

    procedure TStack.PushItem(AItem: Pointer);

    begin

        List.Add(AItem);

    end;

    由于这里使用的是TList类的Add方法,即每次讲新进的指针都添加到List列表的最后。于是,当Pop时所取得的指针就是刚新加去的指针了,从而实现了堆栈的

数据结构。其存储形式如图:                           

                     sp1.JPG  

三. 三、TQueue类

3.1 3.1 TQueue类概述

    TQueue类实现了队列的数据结构,即是实现了First-in and First-out访问方式的指针数组;它是由TOrderedList类派生而来。

3.2 3.2 方法

    同样它也实现了父类TOrderedList类的抽象方法PushItem,如:

    procedure TQueue.PushItem(AItem: Pointer);

    begin

        List.Insert(0, AItem);

    end;

   

    同理,由于这里使用的是TList类的Insert方法,即每次讲新进的指针都插入到List列表的第一个位置。于是,当Pop时所取得的指针都是列表中最后一个位置

的指针了,从而实现了队列的数据结构。其存储形式如图:

                              sp2.JPG


转载于:https://www.cnblogs.com/witluo/archive/2006/11/16/562856.html

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值