一、填空题。
1.线性任何栈顶 2.栈顶栈底 3.移动栈顶指针存入元素。
二、选择题。
三、判断题。
四、简答题。
1.至少有14种。
全进之后再出情况,只有1种:4,3,2,1
进3个之后再出的情况,有3种,3,4,2,1 3,2,4,1 3,2,1,4
进2个之后再出的情况,有5种,2,4,3,1 2,3,4,1 2,1, 3,4 2,1,4,3 2,1,3,4
进1个之后再出的情况,有5种,1,4,3,2 1,3,2,4 1,3,4,2 1, 2,3,4 1,2,4,3
2.输出为“stack”。
五、算法设计题。
1.status allbrackets_test(char *str)//判别表达式中三种括号是否匹配
initstack(s);
for(p=str;*p;p++)
'&&c!='
}//for
if(!stackempty(s)) return error;
return ok;
//allbrackets_test
2.int palindrome_test()
while(!stackempty(s))
return ok;
//palindrome_test
一、填空题。
1.队尾队首 2. 队列 4.队列的假溢出 5.先进先出。
二、选择题。
1. b 2. d 5.(1,2,2)
三、判断题。
四、简答题。
1.用队列长度计算公式: (n+r-f)% n
l=(40+19-11)% 40=8l=(40+11-19)% 40=32
2.一般的一维数组队列的尾指针已经到了数组的上界,不能再有入队操作,但其实数组中还有空位置,这就叫“假溢出”。
采用循环队列是解决假溢出的途径。
另外,解决队满队空的办法有三:
设置一个布尔变量以区别队满还是队空;
浪费一个元素的空间,用于区别队满还是队空。
使用一个计数器记录队列中元素个数(即队列长度)。
我们常采用法②,即队头指针、队尾指针中有一个指向实元素,而另一个指向空闲元素。
判断循环队列队空标志是: f=rear 队满标志是:f=(r+1)%n
五、阅读理解。
1.输出为“char”。
2.该算法的功能是:利用堆栈做辅助,将队列中的数据元素进行逆置。
六、算法设计题。
int elemtype;
typedef struct qnode
status enqueue(queue& q,elemtype e)
return ok; }
status dequeue(queue& q,elemtype& e)
return ok; }
第3章栈与队列答案
return ok allbrackets test 2 int palindrome test while stackempty s return ok palindrome test 一 填空题。1.队尾队首 2.队列 4.队列的假溢出 5.先进先出。二 选择题。1.b 2.d 5.1,2,2 ...
第3章 栈和队列作业
一 选择题。1.若一个栈的输入序列为1,2,3,n,输出序列的第一个元素是i,则第j个输出元素是 a.i j 1b.i jc.j i 1 d.不确定的。2.用s表示进栈操作,用x表示出栈操作。当输入序列为1234,输出序列为1342时,经过的栈操作为 a.sxsxssxxb.sssxxsxx c.s...
第3章习题与答案
dasb.43h c.54h d.67h 答案 c11.下列四条指令中,需要使用dx寄存器的指令是 bx bl ax,20h 20h,al 答案 c12.设 al 0e0h,cx 3,执行rcl al,cl指令后,cf的内容 a.0 b.1 c.不变 d.变反。答案 b13.下列四条指令中,错误的是...