设栈s和队列q的初始状态为空,元素a、b、c、d、e依次进入栈s,当一个元素从栈中出来后立即进入队列q。若从队列的输出端依次得到元素c、d、b、a、e,则元素的出栈顺序是(12),栈s的容量至少为(13)。

admin2019-03-04  35

问题 设栈s和队列q的初始状态为空,元素a、b、c、d、e依次进入栈s,当一个元素从栈中出来后立即进入队列q。若从队列的输出端依次得到元素c、d、b、a、e,则元素的出栈顺序是(12),栈s的容量至少为(13)。

选项 A、2
B、3
C、4
D、5

答案B

解析 (1)队列是一种特殊的线性表,它只允许在表的前端(front)进行删除操作,而在表的后端(rear)进行插入操作。进行插入操作的端称为队尾,进行删除操作的端称为队头。队列中没有元素时,称为空队列。
   队列具有先进先出(FIFO)的特点。
   队列空的条件:front=rear
   队列满的条件:rear=MAXSIZE
   队列可以用数组Q[1…m]来存储,数组的上界m即是队列所允许的最大容量。在队列的运算中需设两个指针:head,队头指针,指向实际队头元素的前一个位置;tall,队尾指针,指向实际队尾元素所在的位置。一般情况下,两个指针的初值设为0,这时队列为空,没有元素。
   队列中拥有的元素个数为:L=tail-head。现在要让排头的元素出队,则需将头指针加 1。如果想让一个新元素入队,则需将尾指针向上移动一个位置。
   (2)栈是一种只能在叫做栈的一段进行进栈或者出栈操作的线性数据结构。栈的主要特点是“后进先出”,即后进栈的元素先处理。通常栈用顺序表存储,分配一块连续的内存区域存放栈中的元素,并用一个变量指向当前的栈顶。
   栈的基本操作:
   .置空栈initStack(s):设置一个空栈s。
   .进栈push(s,x):将元素x进到栈s中,栈指针递增。
   .pop(s,x):将栈s的栈顶元素赋给x,栈指针递减。
   .判断栈空stackempty(s):若栈为空,返回1,否则返回0。
   根据队列的特点,从队列的输出端依次得到元素c、d、b、a、e,则在从队列的输入端应依次输入元素c、d、b、a、e,则元素的出栈顺序是c、d、b、a、e,由于C是第一个出栈,而C是第三个出栈,所以栈s的容量至少为3。
转载请注明原文地址:https://jikaoti.com/ti/1nx7FFFM
0

最新回复(0)