栈(Stack)和队列(Queue)

栈和队列是两种重要的线性结构。从数据结构角度看,栈和队列也是线性表,其特殊性在于栈和队列的基本操作是线性表操作的子集,它们是操作受限的线性表,因 此,可称为限定性的数据结构。但从数据类型角度看,它们是和线性表大不相同的两类重要的抽象数据类型。由于它们广泛应用在各种软件系统中,因此在面向对象 的程序设计中,它们是多型数据类型。本章除了讨论栈和队列的定义、表示方法和实现外,还将给出一些应用的例子。
     抽象数据类型栈的定义
   栈(Stack) 是限定仅在表尾进行插入或删除操作的线性表。因此,对栈来说,表尾端有其特殊含义,称为栈顶(top),相应地,表头端称为栈底(bottom)。不含元素的空表称为空栈。

    

(1)queue和stack类都是容器适配器(container adaptor),容器适配器将一些基础容器转化为自身类的容器。容器适配器构造时需要一个容器模板,例如vector,deque,list等, queue和stack默认的容器模板是deque。这些容器模板也是有一定要求的,需要支持一些基础的方法,比如说vector类就不能做queue的 容器模板(或者叫基础容器),因为vector没有pop_front方法。

(2)队列,queue,满足:1)插入只能从尾部进行;2)删除,检索,修改只允许从头部进行,于是就有先入先出(FIFO)的规律。queue的方法很少,也没有迭代器,而且其唯一可以被访问,修改的量就是queue开头的项。

(3)堆栈,stack,与queue正好相反,后入先出(LIFO)。stack同样没有迭代器,只有堆栈顶部的项才可以被访问。-->可以利用堆栈来实现递归,事实上,编译器实现递归就是通过创建和维护活动对战的代码来实现的

 


评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值