一、选择题
~~01|03|1|1
^^设有一个递归算法如下
int fact(int n) { //n大于等于0
if(n<=0) return 1;
else return n*fact(n-1); }
则计算fact(n)需要调用该函数的次数为( A )。
A. n+1 B. n-1
C. n D. n+2
~~01|03|1|1
^^栈在 ( D )中有所应用。
A.递归调用 B.函数调用
C.表达式求值 D.前三个选项都有
~~01|03|1|1
^^为解决计算机主机与打印机间速度不匹配问题,通常设一个打印数据缓冲区。主机将要输出的数据依次写入该缓冲区,而打印机则依次从该缓冲区中取出数据。该缓冲区的逻辑结构应该是( A )。
A.队列 B.栈
C. 线性表 D.有序表
~~01|03|1|1
^^设栈S和队列Q的初始状态为空,元素e1、e2、e3、e4、e5和e6依次进入栈S,一个元素出栈后即进入Q,若6个元素出队的序列是e2、e4、e3、e6、e5和e1,则栈S的容量至少应该是(B )。
A.2 B.3
C.4 D.6
~~01|03|1|1
^^设计一个判别表达式中左,右括号是否配对出现的算法,采用(D )数据结构最佳。
A.线性表的顺序存储结构 B.队列
C. 线性表的链式存储结构 D. 栈
~~01|03|1|1
^^用链式方式存储的队列,在进行删除运算时( D)。
A. 仅修改头指针 B. 仅修改尾指针
C. 头、尾指针都要修改 D. 头、尾指针可能都要修改
~~01|03|1|1
^^循环队列存储在数组A[0…m]中,则入队时的操作为(D )。
A. rear=rear+1 B. rear=(rear+1)%(m-1)
C. rear=(rear+1)%m D. rear=(rear+1)%(m+1)
~~01|03|1|1
^^最大容量为n的循环队列,队尾指针是rear,队头是front,则队空的条件是(B )。
A. (rear+1)%nfront B. rearfront
C.rear+1front D. (rear-l)%nfront
~~01|03|1|1
^^一个递归算法必须包括( B)。
A. 递归部分 B. 终止条件和递归部分
C. 迭代部分 D. 终止条件和迭代部分
~~01|03|1|1
^^以下(B )不是队列的基本运算?
A.从队尾插入一个新元素 B.从队列中删除第i个元素
C.判断一个队列是否为空 D.读取队头元素的值
~~01|03|1|1
^^一个队列的入队序列是1,2,3,4,则队列的输出序列是(B )。
A.4,3,2,1 B.1,2,3,4
C.1,4,3,2 D.3,2,4,1
~~01|03|1|1
^^在循环队列中,若front与rear 分别表示对头元素和队尾元素的位置,则判断循环队列满的条件是(A )。
A.front==(rear+1)%MAXQSIZE B.rearfront+1
C.frontrear D.front==0
~~01|03|1|1
^^向一个栈顶指针为h的带头结点的链栈中插入指针s所指的结点时,应执行( D)操作。
A.h->next=s ; B.s->next=h ;
C.s->next=h ;h =s ; D.s->next=h->next ;h->next=s ;
~~01|03|1|1
^^输入序列为ABC,可以变为CBA时,经过的栈操作为( B)。
A.push,pop,push,pop,push,pop B.push,push,push,pop,pop,pop
C.push,push,pop, pop,push,pop D.push,pop,push,push,pop,pop
~~01|03|1|1
^^若栈采用顺序存储方式存储,现两栈共享空间V[1 m],top[1]、top[2]分别代表第1和第2个栈的栈顶,栈1的底在V[1],栈2的底在V[m],则栈满的条件是(B )。
A.top[2]-top[1]|=0 B.top[1]+1=top[2]
C.top[1]+top[2]=m D.top[1]=top[2]
~~01|03|1|1
^^允许对队列进行的操作有(D ) 。
A.对队列中的元素排序 B.取出最近进队的元素
C.在队头元素之前插入元素 D.删除队头元素
~~01|03|1|1
^^对于循环队列(D )。
A.无法判断队列是否为空 B.无法判断队列是否为满
C.队列不可能满 D.以上说法都不对
~~01|03|1|1
^^若用一个大小为6的数值来实现循环队列,且当前rear和front的值分别为0和3,当从队列中删除一个元素,再加入两个元素后,rear和front的值分别为(C )。
A.1和5 B.2和4
C.4和2 D.5和1
~~01|03|1|1
^^队列的“先进先出”特性是指(D ) 。
A.最早插入队列中的元素总是最后被删除
B.当同时进行插入、删除操作时,总是插入操作优先
C.每当有删除操作时,总是要先做一次插入操作
D.每次从队列中删除的总是最早插入的元素
~~01|03|1|1
^^和顺序栈相比,链栈有一个比较明显的优势是(A )。
A.通常不会出现栈满的情况 B. 通常不会出现栈空的情况
C.插入操作更容易实现 D.删除操作更容易实现
~~01|03|1|1
^^用不带头结点的单链表存储队列,其头指针指向队头结点,尾指针指向队尾结点,则在进行出队操作时(C ) 。
A.仅修改队头指针 B.仅修改队尾指针
C.队头、队尾指针都可能要修改 D.队头、队尾指针都要修改
~~01|03|1|1
^^设有一个递归算法如下
int x (int n) {
if (n<=3) return 1;
else return x(n-2)+x(n-4)+1;
}
试问 x(8) 返回值为(B )。
A. 8 B.9
C.10 D.11
~~01|03|1|1
^^将一个递归算法改为对应的非递归算法时,通常需要使用(A )。
A.栈 B.队列
C.循环队列 D.优先队列
~~01|03|1|1
^^设数组Data[0…m]作为循环队列SQ的存储空间,front为队头指针,rear为队尾指针,则执行出队操作的语句为(D )。
A.front=front+1 B.front=(front+1)% m
C.rear=(rear+1)%m D.front=(front+1)%(m+1)
二、判断题
~~02|03|1|1
^^栈存储结构可以采用顺序存储也可以采用链式结构实现。(V )
~~02|03|1|1
^^队列的特性决定了其存储结构只能采用顺序存储。( X )
~~02|03|1|1
^^队列的存储结构可以采用顺序存储也可以采用链式结构实现。( V )
~~02|03|1|1
^^队列中元素的进出原则为先进先出,这种特性可用于处理图的DFS遍历。( )
~~02|03|1|1
^^循环队列可以采取设置标志性变量的办法处理假溢出现象。( V )
~~02|03|1|1
^^栈的特性决定了其链式实现时采用不带头结点的链表较易实现。( V )
~~02|03|1|1
^^队列的溢出现象有真溢出和假溢出两种情况,对于真溢出可以采用循环队列处理。( X )
~~02|03|1|1
^^对于不同的使用者,一个表结构既可以是栈,也可以是队列,也可以是线性表。( V )
~~02|03|1|1
^^表达式求值是队列应用的一个典型例子。( X )
~~02|03|1|1
^^栈和链表是两种不同的数据结构。( X )
~~02|03|1|1
^^栈和队列是一种非线性数据结构。( X )
~~02|03|1|1
^^两个栈共享一片连续内存空间时,为提高内存利用率,减少溢出机会,应把两个栈的栈底分别设在这片内存空间的两端。( V )
~~02|03|1|1
^^队列是一种插入与删除操作分别在表的两端进行的线性表,是一种先进后出型结构。( X )