栈和队列知识点总结

  • 一、栈-入栈与出栈
  • 二、循环队列-入队与出队
  • 三、栈的存储空间为S(1:m),初始状态为top=m+1
  • 四、带链的栈和带链的队列
  • 五、线性链表-存储空间不连续
  • 六、线性结构与非线性结构-判断准则


一、栈-入栈与出栈

栈的存储空间为S(1:50),初始状态为top=51,即栈的初始状态为空。当第一个元素进栈后,top=50,第二个元素进栈后,top=49,第三个元素进栈后,top=48,以此类推,若第三个元素出栈后,top=49,第二个元素出栈后,top=50。即每进栈一个元素,top-1;每出栈一个元素,top+1。当top=50时,栈中只有一个元素。
栈的存储空间为S(1:50),初始状态为top=0,栈为空。top=1时,栈中有一个元素;top=50时,栈满,无法再进行入栈操作

二、循环队列-入队与出队

设循环队列的存储空间为Q(1:m),当front=rear=m时,循环队列为空;当front=rear且不等于m时,循环队列可能为空,也可能为满。当为空时,可以插入元素,当为满时,插入元素会发生上溢错误。“成功地将一个元素入队”,说明之前循环队列的状态为空,插入一个元素后,队列中共有1个元素。
如果front<rear,则队列中的元素个数为rear-front; 如果front>rear,则队列中的元素个数为rear-front+m。

三、栈的存储空间为S(1:m),初始状态为top=m+1

表示栈的初始状态为空
酒店拿着油漆在地上从m号房间到1号房间画了一条线,说先到的人住m号房间,并且为了公平规定退房时最后入住的人员先退房,就像一个杯子(栈)一样,先进后出,后进先出。全部入住后,酒店在1号房上贴了一个牌子“top先生”,意思是参会房客的第一个,给m号房上贴上了“bottom先生”,意思是参会房客的最后一个这时会议进行了一段时间,1号房到10号房的人员先行退会,就按照1到10的顺序退房了。他们的房间就空了,所以参会房客的第一个就不是住在1号房的人了,而是第11号房的人。酒店的员工在每次退房时都会把top先生的牌子往后移动一间。待只剩最后一名房客时,他的房间上就会同时挂着top先生和bottom先生。可是m房间的房客也退房后,酒店员工把top先生的牌子按照之前的办法往后移动一间,就是m+1号房间,此时本次参会房客已经没有了,同时这也是最开始的情况(初始状态)。

四、带链的栈和带链的队列

带链的栈是具有栈属性的链表。线性链表的存储单元是不连续的。因为是不连续的存储空间,所以指针将不会有规律地连续变化。当top=bottom=NULL时,栈为空;当top=bottom且不等于NULL时,栈中存在一个元素,其他情况无法判断

带链的队列是采用链式存储结构表示的队列。链式存储的存储单元是不连续的,因为是不连续的存储空间,所以指针将不会有规律地连续变化。当front=rear=NULL时,队为空;当front=rear且不等于NULL时,队列中存在一个元素,其他情况无法判断

五、线性链表-存储空间不连续

线性链表,顾名思义类似于一条链子的表,与线性链表相对的是线性顺序表,二者的区别是,线性顺序表需要在内存中开辟一块连续的区域,因此存储的数据在内存中的状态是连续的,而线性链表在内存中的存储是随机的,数据之间的连接靠的是指针。

六、线性结构与非线性结构-判断准则

一个非空线性结构应满足两个条件:①有且只有一个根结点;②每个结点最多有一个前件,也最多有一个后件。不满足以上两个条件的数据结构就称为非线性结构。