zoukankan      html  css  js  c++  java
  • 栈和队列


    特点:先进后出

    顺序栈:通过数组来实现

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

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

    队列


     

    特点:先进先出

    顺序队列:队头指针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依次进入此队列后再进行出队操作,则可能的出队序列有哪些?

     

  • 相关阅读:
    [Linear Algebra] Matrix-Matrix Multiplication
    [Linear Algebra] Matrix Vector Multiplication
    [Linear Algebra] Matrices and Vectors
    [XState] Invoke with callback
    [PostgresSQL] Install and start the service
    html+JavaScript超大视频上传解决方案
    html+js超大视频上传解决方案
    SiteFactory如何能实现直接粘贴把图片上传到服务器中
    动易CMS如何能实现直接粘贴把图片上传到服务器中
    织梦CMS如何能实现直接粘贴把图片上传到服务器中
  • 原文地址:https://www.cnblogs.com/xidongyu/p/5945177.html
Copyright © 2011-2022 走看看