惯性聚合 高效追踪和阅读你感兴趣的博客、新闻、科技资讯
阅读原文 在惯性聚合中打开

推荐订阅源

J
Java Code Geeks
GbyAI
GbyAI
阮一峰的网络日志
阮一峰的网络日志
Cloudbric
Cloudbric
奇客Solidot–传递最新科技情报
奇客Solidot–传递最新科技情报
宝玉的分享
宝玉的分享
I
Intezer
Simon Willison's Weblog
Simon Willison's Weblog
博客园_首页
The Cloudflare Blog
C
Cisco Blogs
AWS News Blog
AWS News Blog
IT之家
IT之家
Cyberwarzone
Cyberwarzone
罗磊的独立博客
美团技术团队
V
V2EX
Project Zero
Project Zero
A
Arctic Wolf
C
Cyber Attacks, Cyber Crime and Cyber Security
大猫的无限游戏
大猫的无限游戏
博客园 - 叶小钗
月光博客
月光博客
freeCodeCamp Programming Tutorials: Python, JavaScript, Git & More
酷 壳 – CoolShell
酷 壳 – CoolShell
博客园 - 聂微东
有赞技术团队
有赞技术团队
钛媒体:引领未来商业与生活新知
钛媒体:引领未来商业与生活新知
雷峰网
雷峰网
S
Schneier on Security
P
Privacy International News Feed
V
Visual Studio Blog
量子位
T
Tor Project blog
S
Securelist
腾讯CDC
A
About on SuperTechFans
T
Threat Research - Cisco Blogs
G
GRAHAM CLULEY
B
Blog RSS Feed
D
DataBreaches.Net
博客园 - 三生石上(FineUI控件)
B
Blog
NISL@THU
NISL@THU
L
Lohrmann on Cybersecurity
V
Vulnerabilities – Threatpost
人人都是产品经理
人人都是产品经理
博客园 - 【当耐特】
L
LINUX DO - 热门话题
Recorded Future
Recorded Future

博客园 - 望天

Web 2.0 网站架构不可或缺的图书 值得收藏的146条民间小偏方 回龙观常用电话 AJAX页面呈现模式选择 AJAX富客户端开发 Ajax框架介绍 EBS架构及实现业务特点 ASP.net 大文件上传 实现 架构师要了解那些?? witLuo介绍 网络负载平衡转发技术简介(转载) 双网卡实现负载均衡技术的实现与原理 AOP方法调用消息截获(之realproxy) Server Application Unavailable 事务处理可选方式 C# 注册COM+组件步骤 在分布式事务中登记时出错 由TObject原码对类的内存分配 TStream类
TOrderedList类
望天 · 2006-11-16 · via 博客园 - 望天

 一、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时所取得的指针就是刚新加去的指针了,从而实现了堆栈的

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

                       

三. 三、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时所取得的指针都是列表中最后一个位置

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