例题:一个栈的初始状态为空。将元素abcde依次入栈,不可能的出栈顺序()
A.edcba
B.dcbae
C.badce
D.cbaed
E.eabcd
答案:E
解析:abcde的进栈顺序并不是一次性的按照abcde入栈,也可能是先入栈一部分再出栈一部分在进行入栈(这个题好坑)
看完以上的题目,是不是有点懵;下面,跟着考无忧小编一起区分一下栈和队列的进出顺序吧~
1、基本概念:
栈是限定在一端进行插入与删除运算的线性表,是属于一种特殊的线性表。
其插入运算与删除运算都只在线性表的一端进行,即栈是按照“先进后出”或“后进先出”的原则组织数据的。
栈顶:允许插入与删除的一端。
栈底:不允许插入与删除栈顶的另一端。
空栈:栈中没有元素的栈。
2、特点:
(1)栈顶元素是最后被插入和最早被删除的元素。
(2)栈底元素是最早被插入和最后被删除的元素。
(3)栈有记忆作用。
3、栈的基本运算:
(1)插入元素称为入栈运算;
(2)删除元素称为退栈运算;
(3)读栈顶元素是将栈顶元素赋给一个指定的变量,此时指针无变化。
注:栈的存储方式和线性表类似,也有两种,即顺序栈和链式栈;
在顺序存储结构下,栈的插入和删除运算不需移动表中其他数据元素;
栈顶指针top动态反映了栈中元素的变化情况。
1、基本概念:
队列是指允许在一端(队尾)进入插入,而在另一端(队头)进行删除的线性表。
队列是“先进先出”或“后进后出”的线性表。
队尾:允许插入的一端,用尾指针指向队尾元素。
排头:允许删除的一端,用头指针指向头元素的前一位置。
2、队列的特点(注意与栈区分):
队列只允许在队尾进行插入,而在队头进行删除
队列的修改原则是“先进先出”或“后进后出”
队列中元素随队头指针和队尾指针的变化而动态变化(排队买票 走一个人整个队伍都发生前进,不像栈:只有栈顶在变)
3、队列运算包括:
(1)入队运算:从队尾插入一个元素;
(2)退队运算:从队头删除一个元素。
(3)循环队列及其运算:
所谓循环队列,就是将队列存储空间的最后一个位置绕到第一个位置,形成逻辑上的环状空间。
入队运算是指在循环队列的队尾加入一个新元素。
当循环队列非空(s=1)且队尾指针等于队头指针时,说明循环队列已满,不能进行入队运算,这种情况称为“上溢”。
退队运算是指在循环队列的队头位置退出一个元素并赋给指定的变量。首先将队头指针进一,然后将排头指针指向的元素赋给指定的变量。当循环队列为空(s=0)时,不能进行退队运算,这种情况称为“下溢”。
在循环队列中,用队尾指针rear指向队列中的队尾元素,用排头指针front指向排头元素的前一个位置,因此,从头指针front指向的后一个位置直到队尾指针rear指向的位置之间,所有的元素均为队列中的元素。
注*:循环队列中元素的个数=rear-front。
学习完,以上的栈和队列的知识点之后,赶紧去考无忧客户端刷刷题,学以致用哟~
疫情期间,大家一定要继续好好保护自己,不必每分钟都学习,但求学习中每分钟都有收获。
点在看哟