大家好,欢迎来到IT知识分享网。
开发工具与关键技术:Visual Studio 2015 堆栈与队列的区别
作者:廖 茂
撰写时间:2019年05月06日
在数据结构与算法中,有着堆栈和队列,这两种算法在我们的平时软件开发中是需要用到的,首先我们来看一下堆栈,堆栈这种算法其实是一种递归算法,首先看一下堆栈的结构,如下:
从图中可以看到,堆栈的两端是栈顶和栈底,栈底是封闭的,数据(a1……an)只能从栈顶入栈和出栈,那么我们就可以想到多个数据依次入栈后,出栈时第一个出栈的数据就是最后一个入栈的数据,因为栈底是封闭的,就像一叠盘子一样,只能从上往下移开,所以第一个入栈的数据最后出栈,最后入栈的数据第一个出栈。有关栈的基本运算如下:
栈的存储结构有两种,顺序栈和链栈,在这里讲的是顺序栈,接下来看一下顺序栈的具体运作,如下:
首先有一个入栈序列,有ABCDEF六个数据,然后栈有四个长度,还有一个Top指针,Top指针是指向空栈的前一个位置,即需要入栈数据的位置的前一个位置,数据入栈后指针指向入栈成功的数据,数据出栈指针就往前移,指向前一个位置,效果如下:
首先是入栈,可以看到A如栈后,Top指针指向A,接下来是出栈,如下:
可以看到,在出栈序列中有一个数据B,就是说B从栈中移出来了,然后Top指针指向A,在这里还证明了如果入栈顺序是A,B的话,那么出栈的顺序就是B,A,因为只有栈顶才能进行入栈和出栈的操作,这就是堆栈,但是如果我们想要实现数据先入的先出的话,那么就需要用到下面的队列了,如下:
队列中允许插入数据的一端为队尾,允许删除数据的一端为队首,数据(a1……an)从队尾入队,从队首出队,队列的存储结构和堆栈的存储结构相似,分为顺序队列和链式队列,我们这里讲的是顺序队列,我们来看一下队列的运作,如下:
图中front指针为队首指示器,rear为队尾指示器,然后A,B两个元素按顺序入队,每入队一个元素,队尾指示器就往后移动指向下一个空的位置,我们在看一下出队运作,如下:
可以看到,当元素A出队后,队首指示器往后移一个位置,前面的位置就空出来了,也证明了队列的元素先入先出,后入后出的性质。队列与堆栈的区别就在这里,堆栈的元素是先入后出,后入先出。
免责声明:本站所有文章内容,图片,视频等均是来源于用户投稿和互联网及文摘转载整编而成,不代表本站观点,不承担相关法律责任。其著作权各归其原作者或其出版社所有。如发现本站有涉嫌抄袭侵权/违法违规的内容,侵犯到您的权益,请在线联系站长,一经查实,本站将立刻删除。 本文来自网络,若有侵权,请联系删除,如若转载,请注明出处:https://yundeesoft.com/25255.html