一、选择题
1.答案:C.dceab
解析:栈的特点是后进先出(LIFO)。选项A、B、D的输出序列可以通过合理的入栈和出栈操作实现,而选项C中的“dceab”无法实现,因为在“d”出栈后,“c”和“e”必须连续出栈,无法在“e”之前出栈“a”和“b”。
2.答案:C.n-i+1
解析:如果第一个出栈的元素是n,则栈中的元素是按n,n-1,...,1的顺序入栈的。因此,第i个出栈的元素是n-i+1。
3.答案:A.顺序存储结构和链式存储结构
解析:栈通常采用顺序存储结构(数组)或链式存储结构(链表)实现。
4.答案:C.栈
解析:Push和Pop是栈的典型操作,分别用于入栈和出栈。
5.答案:C.s-next=HS;HS=s;
解析:在链栈中,新结点s插入到栈顶,因此s的next指向当前栈顶HS,然后将HS更新为s。
6.答案:B.1,2,3,4
解析:队列的特点是先进先出(FIFO),因此出队顺序与入队顺序一致。
7.答案:C.只允许在端点处插入和删除元素
解析:栈和队列的共同点是插入和删除操作都限制在端点进行,但栈是同一端(栈顶),队列是两端(队尾插入,队头删除)。
8.答案:C.栈顶
解析:栈的插入和删除操作只能在栈顶进行。
9.答案:C.插入和删除
解析:栈顶可以进行插入(Push)和删除(Pop)操作。
10.答案:D.D
解析:元素按A、B、C、D顺序入栈,Pop操作会取出栈顶元素D。
11.答案:B.后进先出
解析:栈的特点是后进先出(LIFO)。
12.答案:B.可变的
解析:栈中元素的个数是动态变化的,取决于入栈和出栈操作。
13.答案:B.B
解析:元素按A、B、C、D顺序入栈,两次Pop操作后,栈顶元素是B。
14.答案:A.必须一致
解析:栈内元素的类型必须一致,这是由栈的同构性决定的。
15.答案:A.已固定
解析:顺序栈的空间大小在定义时已固定。
16.答案:B.加了限制的
解析:栈是一种操作受限的线性表,只能在栈顶进行插入和删除。
17.答案:D.插入、删除元素的位置
解析:栈与一般线性表的区别在于插入和删除操作的位置受限。
18.答案:D.栈
解析:栈适合用于检查括号匹配问题,因为可以方便地检查最近的左括号和右括号是否配对。
19.答案:C.栈
解析:递归调用时,参数和返回地址通过栈来管理。
20.答案:A.(rear-front+m)%m
解析:循环队列中,元素个数的计算公式为(rear-front+m)%m,可以正确处理队列环绕的情况。
---
二、名词解释
1.栈
栈是一种线性数据结构,遵循后进先出(LIFO)的原则。插入和删除操作只能在栈顶进行,主要操作包括Push(入栈)和Pop(出栈)。
2.队列
队列是一种线性数据结构,遵循先进先出(FIFO)的原则。插入操作在队尾进行,删除操作在队头进行,主要操作包括Enqueue(入队)和Dequeue(出队)。
3.循环队列
循环队列是队列的一种实现方式,通过将队列的首尾相连形成一个环形结构,以解决顺序队列中“假溢出”的问题。循环队列通过模运算实现指针的循环移动。