目前最完整的数据结构1800题包括完整答案-第三章-栈和队列范文(汇编) 下载本文

内容发布更新时间 : 2024/6/8 11:21:09星期一 下面是文章的全部内容请认真阅读。

精品文档

12. 循环队列的引入,目的是为了克服_______。【厦门大学 2001 一、1 (14/8分)】 13.用下标0开始的N元数组实现循环队列时,为实现下标变量M加1后在数组有效下标范围内循环,可采用的表达式是:M:=_______(填PASCAL语言,C语言的考生不填); M= _______(填C语言,PASCAL语言的考生不填)。【西南交通大学 2000 一、7】 14.________又称作先进先出表。【重庆大学 2000 一、7】 15. 队列的特点是_______。【北京理工大学 2000 二、2(2分)】 16.队列是限制插入只能在表的一端,而删除在表的另一端进行的线性表,其特点是_______。

【北方交通大学 2001 二、5】

17. 已知链队列的头尾指针分别是f和r,则将值x入队的操作序列是_______。

【合肥工业大学 2000 三、3(2分)】

18.区分循环队列的满与空,只有两种方法,它们是______和______。【北京邮电大学2001 二、2(4分)】

19.设循环队列用数组A[1..M]表示,队首、队尾指针分别是FRONT和TAIL,判定队满的条件为_______。

【山东工业大学 1995 一、1(1分)】

20. 设循环队列存放在向量sq.data[0:M]中,则队头指针sq.front在循环意义下的出队操作可表示为_______,若用牺牲一个单元的办法来区分队满和队空(设队尾指针sq.rear),则队满的条件为_______。

【长沙铁道学院 1997 二、4 (4分)】

21.表达式求值是_______应用的一个典型例子。【重庆大学 2000 一、10】

22.循环队列用数组A[0..m-1]存放其元素值,已知其头尾指针分别是front和rear ,则当前队列的元素个数是_______。【厦门大学 2000 六、1(16%/3分)】

23.设Q[0..N-1]为循环队列,其头、尾指针分别为P和R,则队Q中当前所含元素个数为_______。

【北京科技大学 1997 一、4】 24.完善下面算法。【中山大学 1998 四、2(6分)】

后缀表达式求值,表达式13/25+61的后缀表达式格式为: 13, 25/61, + FUNC compute(a):real; 后缀表达式存储在数组a[1..m]中。 BEGIN

setnull(s);i:=1;ch:= (1)______; WHILE ch<>’@’ DO BEGIN

CASE ch OF

‘0’..‘9’: x:=0;

WHILE ch<>’,’DO BEGIN

x:=x*10+ord(ch)-ord(‘0’); i:=i+1;ch:= (2)_______; END

‘+’: x:=pop(s)+pop(s);

‘-‘: x:=pop(s);x:=pop(s)-x; ‘*’: x:=pop(s)*pop(s);

‘/’: x:=pop(s);x:=pop(s)/x;

ENDCASE 精品文档

精品文档

push(s,x);i:=i+1;ch:=a[i]; END;

comput:= (3)_______; END;

25. 算术表达式求值的流程,其中OPTR为算术符栈,OPND为操作数栈,precede(oper1,oper2)是比较运算符优先级别的函数,operate(opnd1,oper,opnd2)为两操作数的运算结果函数。(#表示运算起始和终止符号)【西北工业大学 1999 六、2 (7分)】 FUNCTION exp_reduced:operandtype;

INITSTACK(OPTR);PUSH(OPTR\;INITSTACK(OPND);read(w); WHILE NOT((w='#’) AND (GETTOP(OPTR)='#')) DO IF NOT w in op THEN PUSH(OPND,w); ELSE CASE precede(GETTOP(OPTR),w)OF '<':[(1)_______; read(w);] '=':[(2)_______; read(w);];

'>':[theta:=POP(OPTR);b:=POP(OPND);a:=POP(OPND);(3)_______;] ENDC;

RETURN(GETTOP(OPND));

ENDF;

26.根据需要,用适当的语句填入下面算法的_______中:

问题:设有n件物品,重量分别为w1,w2,w3,…,wn和一个能装载总重量为T的背包。能否从n件物品中选择若干件恰好使它们的重量之和等于T。若能,则背包问题有解,否则无解。解此问题的算法如下:

FUNCTION kanp_stack(VAR stack,w:ARRAY[1..n] OF real; VAR top:integer; T:real):boolean;

{w[1:n] 存放n件物品的重量,依次从中取出物品放入背包中,检查背包重量,若不超过T,则装入,否则弃之,取下一个物品试之。若有解则返回函数值true,否则返回false}

BEGIN

top:=0; i:=1; { i指示待选物品} WHILE (1)_______ AND(2)_______DO

[IF (3)______ OR (4)_______ AND (i

THEN [top := (5)_______ ;stack[top] :=i;{第i件物品装入背包} T:=T-w[i]];

IF T=0 THEN RETURN ((6)_______) {背包问题有解}

ELSE [IF (i=n ) AND (top>0)

THEN [i:=(7)_______;{取出栈顶物品} 精品文档

精品文档

top:= (8)_______ ;T:= (9)_______ ]; {恢复T值} i:=i+1 {准备挑选下一件物品} ];

精品文档