栈(Stack)和队列(Queue)
2009-10-12 14:24
155 查看
栈和队列是两种重要的线性结构。从数据结构角度看,栈和队列也是线性表,其特殊性在于栈和队列的基本操作是线性表操作的子集,它们是操作受限的线性表,因
此,可称为限定性的数据结构。但从数据类型角度看,它们是和线性表大不相同的两类重要的抽象数据类型。由于它们广泛应用在各种软件系统中,因此在面向对象
的程序设计中,它们是多型数据类型。本章除了讨论栈和队列的定义、表示方法和实现外,还将给出一些应用的例子。
抽象数据类型栈的定义
栈(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同样没有迭代器,只有堆栈顶部的项才可以被访问。-->可以利用堆栈来实现递归,事实上,编译器实现递归就是通过创建和维护活动对战的代码来实现的
。
此,可称为限定性的数据结构。但从数据类型角度看,它们是和线性表大不相同的两类重要的抽象数据类型。由于它们广泛应用在各种软件系统中,因此在面向对象
的程序设计中,它们是多型数据类型。本章除了讨论栈和队列的定义、表示方法和实现外,还将给出一些应用的例子。
抽象数据类型栈的定义
栈(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同样没有迭代器,只有堆栈顶部的项才可以被访问。-->可以利用堆栈来实现递归,事实上,编译器实现递归就是通过创建和维护活动对战的代码来实现的
。
/// <summary> /// StackTest /// </summary> public void StackTest() { Stack stack = new Stack(); //System.Collections.Stack の先頭にオブジェクトを挿入します。 stack.Push(11); stack.Push(22); //obj1 = 22; object obj1 = stack.Peek(); } /// <summary> /// QueueTest /// </summary> public void QueueTest() { Queue queue = new Queue(); //System.Collections.Queue の末尾にオブジェクトを追加します。 queue.Enqueue(11); queue.Enqueue(22); //obj1 = 11; object obj1 = queue.Peek(); }
相关文章推荐
- (队列的应用5.3.1)ZOJ 3210 A Stack or A Queue?根据进入结构的序列和离开结构的序列确定是stack还是queue)
- 栈,队列 以及 stack, queue 的相互实现 .
- 数据结构之栈(Stack)与队列(Queue)
- 线性表【栈(Stack)后进先出】【 队列(Queue)先进先出】
- 自己实现一个栈(Stack)和队列(Queue)
- python实现stack(栈)和队列(queue)
- C++基础:C++标准库之栈(stack)和队列(queue)
- 【数据结构】第2周 栈与队列 3:stack or queue
- 栈(stack)和队列(queue)的简单实例
- 队列(Queue),堆栈(Stack)
- 栈(Stack)、队列(Queue)与包(Bag)的实现
- C++标准库__std::deque(双端队列),std::queue(队列),std::stack(栈)__由stl的定义我们就可以看出 queue和stack都是基于deque实现的和常用接口
- C++基础:C++标准库之栈(stack)和队列(queue)
- 数据结构之栈(Stack)与队列(Queue)
- 特殊集合 队列(queue) 堆栈(stack) 哈希表(hashtable)
- 数据结构与程序设计c++-----栈(stack)与队列(queue)
- erl_stack_queue-队列求迷宫最短路径
- 用两个栈(Stack)实现一个队列(Queue)
- Implement queue with two stack 用两个堆实现队列
- STL学习笔记6 -- 栈stack 、队列queue 和优先级priority_queue 三者比较