数据结构之表、栈和队列(一)

本系列博客主要讨论数据结构的一些基本知识,我们先从表、栈和队列入手,进而讨论树结构,以及各种结构在算法中的应用。

  1. 介绍抽象数据类型(ADT)的概念;
  2. 介绍表ADT和它的一些有效操作;
  3. 介绍栈ADT及其实现递归方面的应用;
  4. 介绍队列ADT及其在操作系统和算法设计中的应用;

抽象数据类型

在程序设计中,主例程不应超过一页,我们把程序的一些主要逻辑可以切割成不同的模块来实现(module)。每个模块实现程序的某个特定功能。这样我们在程序设计中有以下优点:

  1. 调试方便,调试小程序比调试大程序方便;
  2. 方便多人协作开发,模块之间互相独立;
  3. 程序修改起来方便;

抽象数据类型(abstructc data type, ADT)是一些操作的集合。在 ADT 的定义中根本没有涉及如何实现操作的集合,因此抽象数据类型也可以看作是一种模块化设计方式。例如对于一个集合 ADT,我们可以有并、交和获取大小等操作,或者,我们只需要并和查找两个操作。这就是两个不同的集合ADT。

对于每种 ADT,并没有某个确定的理论来告诉我们需要哪些操作,这一般取决于程序设计者的决策,对于操作的实现我们一般也是通过模块化进行实现。我们先讨论表、栈和队列这三种数据结构,这三个数据结构是最基本的ADT。

表 ADT

表 ADT 一般要实现的操作集合包括:获取表的大小、清空表、查找元素的位置、插入元素和杀出元素等;表的实现有简单的数组实现和链表结构,但是由于数组结构的限制,比如插入和删除都需要移动数组中的所有元素,因此一般我们并不推荐用数组来实现表 ADT。

为了提升表 ADT 的运行速度,特别是删除和插入的运行开销,我们必须允许表结构在内存中不连续存储,所以我们的每一个结构包含一个只想后续元素的结构指针,记作 NEXT 指针,最后一个指针指向 NULL。链表结构又包括:单项链表、双链表、循环链表等,我将在下一遍博客中介绍链表的 C 语言实现和它的应用,未完待续.......

 

 

 

 

 

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值