
栈和队列
文章平均质量分 79
c++用顺序表和链表简单实现栈和队列,以及库中的一些基本函数,一些简单的面试题
z_xiao_xue
这个作者很懒,什么都没留下…
展开
-
用两种方法实现栈---顺序表和链表
栈是一种先进后出的数据结构,栈中的数据是先进后出的(First In Last Out, FILO)。栈只有一个出口,允许新增元素(只能在栈顶上增加)、移出元素(只能移出栈顶元素)、取得栈顶元素等操作。在STL中,栈是以别的容器作为底部结构,再将接口改变,使之符合栈的特性就可以了。栈里面常用的函数有push()(增),pop()(删),size()(求大小),top()(顶部)和empty()(空原创 2016-08-06 11:37:06 · 1979 阅读 · 0 评论 -
两种方法实现队列---顺序表和链表
队列(queue)在计算机科学中,是一种先进先出的线性表。它只允许在表的前端(front)进行删除操作,而在表的后端(rear)进行插入操作。进行插入操作的端称为队尾,进行删除操作的端称为队头。队列中没有元素时,称为空队列。队列主要有push()(尾插),pop()(头删),size()(求队列大小),empty()(是否为空队列)几个基本的操作函数。顺序表实现队列:顺序表代码原创 2016-08-07 21:03:17 · 2131 阅读 · 5 评论 -
栈和队列面试题(一)
1.实现一个栈,要求Push(入栈),Pop(出栈),Min(返回最小值的操作)的时间复杂度为O(1)。思想:创建两个栈,一个为正常栈S,一个为最小元素栈Minstack,按元素入栈顺序将第一个元素入S和Minstack栈,然后将元素依次入栈,入栈时,将每个元素与Minstack栈的栈顶元素进行比较,如果该元素小于Minstack栈栈顶元素,就把该元素也放进Minstck栈,出栈时,判断出栈元原创 2016-08-20 10:42:53 · 1588 阅读 · 0 评论 -
栈和队列面试题(二)
2.使用两个栈实现一个队列。思想:栈是先进后出的数据结构,队列是先进先出的数据结构,要用两个栈实现一个队列,就必须让两个栈实现元素的先进先出。入栈时,让需要入栈的元素全都进入S1栈中,出栈时,再把S1中的元素依次出栈,入S2栈,再把S2的栈顶元素弹出。如下图所示:当然,这个过程过于繁琐,有可以优化的方法如下图所示:代码实现://两个栈实现一个队列#include原创 2016-08-20 11:19:28 · 646 阅读 · 0 评论 -
栈和队列面试题(三)
4.元素出栈入栈的合法性,如入栈的序列(1,2,3,4,5),出栈的序列为(4,5,3,2,1).思想:先入栈一个元素,将出栈序列的第一个元素和该栈的栈顶元素比较,如果相同,那就让该元素出栈且出栈序列往后走一个,如果不相同,就按照入栈序列再把下一个元素入栈,再接着把栈顶元素和出栈元素进行比较,就这样循环比较,直到出栈序列为空,如果栈也为空,说明该出栈序列是合法的,否则就是不合法的。例如:入原创 2016-08-24 14:59:03 · 4133 阅读 · 0 评论 -
栈和队列面试题(四)
5.一个数组实现两个栈有两种方法:(1),数组单号下标为一个栈,双号下标为一个栈(2)开辟一个数组,从0号下标往右为1号栈,从N号下标网左为2号栈下面先来实现第一种方法:#include #include using namespace std;templateclass DoubleStack2{public: DoubleStack2() :_a原创 2016-08-24 15:23:38 · 579 阅读 · 1 评论