码迷,mamicode.com
首页 > 其他好文 > 详细

栈和队列

时间:2016-10-10 13:42:44      阅读:142      评论:0      收藏:0      [点我收藏+]

标签:


特点:先进后出

顺序栈:通过数组来实现

共享栈:两个顺序栈共享一个一维数据空间,将两个栈的栈底分别设置在共享空间的两端,两个栈顶向共享空间的中间延伸。共享栈是为了更好的利用存储空间

链栈:通过链表(单链表,头插法)来实现栈的功能,其特点栈不会上溢

队列


 

特点:先进先出

顺序队列:队头指针front,队尾指针rear。当元素出队front指针后移,当元素入队rear指针后移。缺点:但front和rear都指向队列的最大容量处后,这时队列虽然有存储空间,但是无法在存储数据

循环队列:逻辑上将队列看成一个环,成为循环队列。使用循环队列可以使得存储空间重复利用,克服了顺序队列的缺点。但是需要注意的是要区分循序队列的空和满(队尾指针并不指向队尾元素,而是指向下一空元素。队满的标志是队尾指针的下一个位置是队头指针。队空的标志是队头指针和队尾指针指向对一个位置)

链队列:用链表的方式来实现队列的功能,从链表的头取,从链表的尾插。

双端队列:双端队列允许两端都可以入队和出队,它既有栈的特性也有队列的特性。但是我们平时使用的都是受限的双端队列。

输出受限的双端队列:允许在一端进行插入和删除,但在另一端只允许插入的双端队列称为输出受限的双端队列

输入受限的双端队列:允许在一端进行插入和删除,但在另一端只允许删除的双端队列成为输入受限的双端队列

例题


 

  • 若元素a、b、c、d、e、f依次进栈,允许进栈、退栈操作交替进行,但不允许连续3次进行退栈操作,则可能得到的出栈序列有哪些?
  • 设栈S和队列Q的初始状态为空,元素abcdefg依次进入栈S。若每个元素出栈后立即进入队列Q,且7个元素出队的顺序是bdcfeag,则栈S的容量至少是多少
  • 一个栈的入栈顺序是1、2、3....n,其出栈序列是p1,p2,p3....pn。若p2=3,则p3可能取值的个数是多少
  • 已知循环队列存储在一维数组A[0...N-1]中,且队列非空时front和rear分别指向队头元素和队尾元素,若初始时队列为空,且要求第一个进入队列的元素存储在A[0]处,则初始时front和rear的值分别是多少
  • 某队列允许在其两端进行入队操作,但仅允许在一端进行出队操作。若元素a、b、c、d、e依次进入此队列后再进行出队操作,则可能的出队序列有哪些?

 

 

栈和队列

标签:

原文地址:http://www.cnblogs.com/xidongyu/p/5945177.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!