栈と队列の习题 1.(单选) 设栈的输入序列是1,2,3,4,则不可能是其出栈序列的是(D)。 A. 1,2,3,4 B. 2,1,3,4 C. 1,4,3,2 D. 4,3,1,2 2.(单选) 一个栈的输入序列是1,2,3,…,n,若输出序列的第一个元素是n,则输出的第i(2≤i≤n)个元素是(C)。 A. i B. n-i C. n-i+1 D. 不确定 3.(单选) 若元素a,b,c,d,e,f依次进栈,允许进栈和出栈操作交替进行,但不允许连续三次进行出栈操作,则不可能得到的出栈序列是(D)。 A. d,c,e,b,f,a B. c,b,d,a,e,f C. b,c,a,e,f,d D. a,f,e,d,c,b 4. (单选) 下列关于栈的叙述中,错误的是(C)。 ① 将递归算法改写为非递归算法时必须使用栈; ② 函数调用时,系统要用栈保存必要的信息; ③ 只要确定了入栈次序,即可确定出栈次序; ④ 栈时一种受限的线性表,允许在栈的两端进行操作 A. 仅① B. 仅①②③ C. 仅①③④ D. 仅②③④ 5.(单选) 与顺序栈相比,链栈的特点是(A)。 A. 通常不会出现栈满的情况 B. 通常不会出现栈空的情况 C. 入栈操作更简单且容易实现 D. 出栈操作更简单且更容易实现 6.(单选) 以下关于栈和队列的说法中,正确的是(C)。 A. 栈和队列都是后进先出的线性表 B. 栈和队列都是先进先出的线性表 C. 栈是在表尾插入和删除元素,队列是在表头删除元素、在表尾插入元素 D. 栈是在表尾插入和删除元素,队列是在表头插入和删除元素 7.(单选) 若用一个大小为6的数组来实现循环队列,front指示队头元素位置,rear指示队尾元素之后的位置,front的当前值为3,rear的当前值为0,那么从队列中删除一个元素再加入两个元素后,front和rear的值分别为(D)。 A. 1和5 B. 5和1 C. 2和4 D. 4和2 8.(单选) 在含有头结点的单循环链表队列中,结点包含数据域data和后继节点指针域next,rear指向队尾结点,则空队列的条件为(B)。 A. rear==NULL B. rear==rear->next C. rear->next==NULL D. rear->data==rear 9.(单选) 采用顺序存储结构的栈和队列Q的初始状态都为空,元素a、b、c、d、e、f依次进入队列Q,Q中的每个元素出队列后立刻进入栈Q,如果出栈序列是b、c、d、f、e、a,则栈S的容量应不少于(B)。 A. 2 B. 3 C. 4 D. 5 10.(单选) 利用单链表来表示队列,最适合的是(D)。 A. 用尾指针作为链表标识的非循环链表 B. 用头指针作为链表标识的非循环链表 C. 用头指针作为链表标识的循环链表 D. 用尾指针作为链表标识的循环链表