1.栈的插入与删除操作在( )进行。
A.栈顶(正确答案)
B.栈底
C.任意位置
D.指定位置
2.栈和队列都是()。
A.顺序存储的线性结构
B.限制存取点的线性结构(正确答案)
C.链接存储的线性结构
D.限制存取点的非线性结构
3.若让元素1,2,3依次进栈,则出栈次序不可能出现的情况是( )。
A.3,2,1
B. 2, 1, 3
C.3,1,2(正确答案)
D.1,3,2
4.栈和队列的共同点是( ).
A.都是先进后出
B.都是先进先出
C.只允许在端点处插入和删除元素(正确答案)
D.没有共同点
5.队列的删除操作是在( )。
A.队首(正确答案)
B.队尾
C.队前
D.队后
6.假定一个循环顺序队列的队首和队尾指针分别为f和r,则判断队空的条件是( )。A.f+1==r
B.r+1==f
C.f==0
D.f==r(正确答案)
7.假定一个链队的队首和队尾指针分别为front和rear,则判断队空的条件是( )。
A.front==rear(正确答案)
B.front!=NULL
C. rear!=NULL
D. front==NULL
8.若一个循环队列空间大小为6,当前rear 和front的值分别为0和3,当从队列中删除一个元素,再加入两个元素后,rear和front的值分别为( )。
A.1和5
B.2和4(正确答案)
C.4和2
D.5和1
9.一个顺序栈S,其栈顶元素下标为top,则将元素e入栈的操作是( )。
A. S[top]=e; top++;(正确答案)
B. top++;S[top]=e;
C. S[top]=e;
D. S[top]=e;
10.在一个循环顺序队列中,队首指针指向队首元素的( )位置。
A.前一个(正确答案)
B.后一个
C.当前
D.后面
11.依次在初始为空的队列中插入元素a、b、c、d以后,紧接着做了两次出队操作,此时的队头元素是()。
A.a
B.b
C.c(正确答案)
D.d
12.表达式 a*(b+c)-d的后缀表达式是( )。
A. abcd+-
B.abc+*d-(正确答案)
C. abc*+d-
D.-+*abcd
13.将递归算法转换成对应的非递归算法时,通常需要使用( )来保存中间结果。
A.队列
B.栈(正确答案)
C.链表
D.树
14.在一个链式队列中,假定front和rear分别为队头指针和队尾指针,插入一个结点s的操作是( )。
A.front=front.next;
B.s.next=rear;rear=s;
C.rear.next=s;rear=s;(正确答案)
D. s.next=front;front=s;
15.当用大小为N的数组存储顺序循环队列时,该队列的最大长度为( )。
A.N
B.N+1
C. N-1(正确答案)
D. N-2
16.在解决计算机主机和打印机之间速度不匹配问题时,通常设置一个打印数据缓冲区,主机将要输出的数据依次写入该缓冲区,而打印机则从该缓冲区中取走数据打印。该缓冲区应该是一个( )结构。
A.堆栈
B.队列(正确答案)
C.数组
D.线性表
17.在一个链队列中,假定front和rear分别为队头指针和队尾指针,删除一个结点的操作是( )。A.front=front.next;(正确答案)
B.rear=rear.next;
C. rear.next=front;
D.front.next=rear;
18.一个递归算法必须包括( )。
A.递归部分
B.终止条件和递归部分(正确答案)
C.迭代部分
D.终止条件和迭代部分
19.用链接方式存储的队列,在进行出队操作时( )。
A.仅修改头指针
B.仅修改尾指针
C.头、尾指针都要修改
D.头、尾指针可能都要修改(正确答案)
20.执行完下列语句段后,i的值为( )。
int f(int x)
{ return ((x>0) ? x* f(x-1) : 2);}
int i;
i =f(f(1));
A.2
B.4(正确答案)
C.8
D.无限递归