表、栈和队列(未完结)

表、栈和队列

3.1抽象数据类型

抽象数据类型(abstract data type ADT)是一些操作的集合。抽象数据类型是数学的抽象(?)

例如 表、集合、图和它们的操作一起可以看作是抽象数据类型。

3.2表 ADT

定义:A1,A2,A3…AN的表,这个表的大小是N

​ 我们称大小为0的表为空表(empty list)

​ Ai+1后继Ai 并称 Ai+1前驱Ai

操作的集合:

PrintList

打印List

MakeEmpty

清空定义的数据结构

Find:

返回关键字首次出现的位置

Insert Delete:

从表中某个位置插入和删除某个关键字

FindKth:

返回某个位置上(作为参数而被指定)的元素

3.2.1 表的简单数组实现

表的所有操作都可以用数组来实现。

因为对表的大小要估计的大一些所以会浪费大量空间,同时,在实现插入和删除的过程中,时间复杂度为O(n),所以简单数组一般不用来实现表这种结构

3.2.2 链表

目的: 避免插入和删除的先行开销

链表:由一系列不必在内存中相连的结构(表元素+Next指针)组成

指针变量:用于找到链表的第一个单元

记住,一个指针就是一个数

3.2.3 程序设计细节

问题

  1. 不存在所给定义出发在表的前面插入元素的真正显性的方法

  2. 删除表的第一个结构,可能会因为疏忽造成表的丢失

  3. 删除算法要求我们记住被删除元素前面的表元

    解决

**解决:**增加一个头结点(表头 header)

3.2.5 双链表

就是在数据结构上附加一个域,使它包含指向前一个单元的指针即可。

开销是一个附加的链,增加了空间需求,使得插入和删除的开销增加一倍

优点,简化了删除操作。

3.26 循环链表

最后的单元指向第一个单元

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值