第3章 栈和队列 选择题 1.对于栈操作数据的原则是()。【青岛大学2001五、2(2分)】 A.先进先出B.后进先出C.后进后出D.不分顺序 2.在作进栈运算时,应先判别栈是否(①),在作退栈运算时应先判别栈是否(②)。 当栈中元素为n个,作进栈运算时发生上溢,则说明该栈的最大容量为(③)。 为了增加内存空间的利用率和减少溢出的可能性,由两个栈共享一片连续的内存空间时 应将两栈的(④)分别设在这片内存空间的两端,这样,当(⑤)时,才产生上溢 ①,②:A.空 B.满 C.上溢 D.下溢 ③:A.n-1 D. n/ ④:A.长度 深度 C.栈顶 D.栈底 ⑤:A.两个栈的栈顶同时到达栈空间的中心点 B.其中一个栈的栈顶到达栈空间的中心点 C.两个栈的栈顶在栈空间的某一位置相遇. D.两个栈均不空,且一个栈的栈顶到达另一个栈的栈底 【上海海运学院1997二、1(5分)】【上海海运学院1999二、1(5分)】 3.一个栈的输入序列为123…n,若输出序列的第一个元素是n,输出第i(1<=i<=n)个元 素是()。 A.不确定 D. n-i 【中山大学1999一、9(1分)】 4.若一个栈的输入序列为1,2,3,…,n,输出序列的第一个元素是i,则第j个输出元素是 C.j-i+ D.不确定的 【武汉大学2000二、3】 5.若已知一个栈的入栈序列是1,2,3,…,n,其输出序列为p,p2,p3,…,p,若ps是n,则 p;是() B. n-i D.不确定 【南京理工大学2001一、1(1.5分)】 有六个元素6,5,4,3,2,1的顺序进栈,问下列哪一个不是合法的出栈序列?() A.543612B.453126 C.346521D. 4156 【北方交通大学2001一、3(2分)】 7.设栈的输入序列是1,2,3,4,则()不可能是其出栈序列。【中科院计算所2000一 10(2分)】 A.1,2,4,3 B.2,1,3,4, C.1,4,3,2, D.4,3,1,2, E.3,2,1,4, 8.一个栈的输入序列为12345,则下列序列中不可能是栈的输出序列的是() A.23415 【南开大学2000一、1】【山东大学2001二、4(1分)】【北京理工大学2000一、2 分)】 9.设一个栈的输入序列是1,2,3,4,5,则下列序列中,是栈的合法输出序列的是 A.51234 B.45132 C.43125 154 【合肥工业大学2001一、1(2分)】 10.某堆栈的输入序列为a,b,c,d,下面的四个序列中,不可能是它的输出序列的是
第 3 章 栈和队列 一 选择题 1. 对于栈操作数据的原则是( )。【青岛大学 2001 五、2(2 分)】 A. 先进先出 B. 后进先出 C. 后进后出 D. 不分顺序 2. 在作进栈运算时,应先判别栈是否( ① ),在作退栈运算时应先判别栈是否( ② )。 当栈中元素为 n 个,作进栈运算时发生上溢,则说明该栈的最大容量为( ③ )。 为了增加内存空间的利用率和减少溢出的可能性,由两个栈共享一片连续的内存空间时, 应将两栈的 ( ④ )分别设在这片内存空间的两端,这样,当( ⑤ )时,才产生上溢。 ①, ②: A. 空 B. 满 C. 上溢 D. 下溢 ③: A. n-1 B. n C. n+1 D. n/2 ④: A. 长度 B. 深度 C. 栈顶 D. 栈底 ⑤: A. 两个栈的栈顶同时到达栈空间的中心点. B. 其中一个栈的栈顶到达栈空间的中心点. C. 两个栈的栈顶在栈空间的某一位置相遇. D. 两个栈均不空,且一个栈的栈顶到达另一个栈的栈底. 【上海海运学院 1997 二、1(5 分)】【上海海运学院 1999 二、1(5 分)】 3. 一个栈的输入序列为 123…n,若输出序列的第一个元素是 n,输出第 i(1<=i<=n)个元 素是( )。 A. 不确定 B. n-i+1 C. i D. n-i 【中山大学 1999 一、9(1 分)】 4. 若一个栈的输入序列为 1,2,3,…,n,输出序列的第一个元素是 i,则第 j 个输出元素是 ( )。 A. i-j-1 B. i-j C. j-i+1 D. 不确定的 【武汉大学 2000 二、3】 5. 若已知一个栈的入栈序列是 1,2,3,…,n,其输出序列为 p1,p2,p3,…,pN,若 pN 是 n,则 pi 是( )。 A. i B. n-i C. n-i+1 D. 不确定 【南京理工大学 2001 一、1(1.5 分)】 6. 有六个元素 6,5,4,3,2,1 的顺序进栈,问下列哪一个不是合法的出栈序列?( ) A. 5 4 3 6 1 2 B. 4 5 3 1 2 6 C. 3 4 6 5 2 1 D. 2 3 4 1 5 6 【北方交通大学 2001 一、3(2 分)】 7. 设栈的输入序列是 1,2,3,4,则( )不可能是其出栈序列。【中科院计算所 2000 一、 10(2 分)】 A. 1,2,4,3, B. 2,1,3,4, C. 1,4,3,2, D. 4,3,1,2, E. 3,2,1,4, 8. 一个栈的输入序列为 1 2 3 4 5,则下列序列中不可能是栈的输出序列的是( )。 A. 2 3 4 1 5 B. 5 4 1 3 2 C. 2 3 1 4 5 D. 1 5 4 3 2 【南开大学 2000 一、1】【山东大学 2001 二、4 (1 分)】【北京理工大学 2000 一、2 (2 分)】 9. 设一个栈的输入序列是 1,2,3,4,5,则下列序列中,是栈的合法输出序列的是( )。 A. 5 1 2 3 4 B. 4 5 1 3 2 C. 4 3 1 2 5 D. 3 2 1 5 4 【合肥工业大学 2001 一、1(2 分)】 10. 某堆栈的输入序列为 a, b,c ,d,下面的四个序列中,不可能是它的输出序列的是
()。 B. b 【北京航空航天大学2000一、3(2分)】【北京邮电大学1999、3(2分)】 11.设 abcdef以所给的次序进栈,若在进栈操作时,允许退栈操作,则下面得不到的序列为 A. fedcba B. bcafed C. dcefba 【南京理工大学1996一、9(2分)】 12.设有三个元素X,Y,Z顺序进栈(进的过程中允许出栈),下列得不到的出栈排列是 A. XYZ B. YZX C. ZXY D. ZYX 【南京理工大学1997 (2分)】 13.输入序列为ABC,可以变为CBA时,经过的栈操作为()【中山大学1999一、8(1 分)】 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 14.若一个栈以向量V[1.n]存储,初始栈顶指针top为n+1,则下面x进栈的正确操作是 A. top: =top+1: v [top]: =x B. v [top]: =x; top: =top+ C. top: =top-1: V [top]: =x D. v [top 【南京理工大学1998一、13(2分)】 15.若栈采用顺序存储方式存储,现两栈共享空间V[1.m],top[i代表第i个栈(i=1,2) 栈顶,栈1的底在v[1],栈2的底在V[m,则栈满的条件是()。 A.top[2]-top[1l1=0 B. top[1]+1=top [2] C. top[1]+top[2]=m 【南京理工大学1999一、14(1分)】 16.栈在 )中应用。【中山大学1998二、3(2分)】 A.递归调用 B.子程序调用 C.表达式求值D.A,B,C 17.一个递归算法必须包括()。【武汉大学2000二、2】 A.递归部分B.终止条件和递归部分C.迭代部分D.终止条件和迭 代部分 18.执行完下列语句段后,i值为:()【浙江大学2000一、6(3分)】 int f(int x) return((x>0)?x*f(x-1):2);} B.4 C.8 D.无限递归 19.表达式a*(b+c)-d的后缀表达式是()。【南京理工大学2001一、2(1.5分)】 0.表达式3*2^(4+2*2-6*3)-5求值过程中当扫描到6时,对象栈和算符栈为(),其 中为乘幂 A.3,2,4,1,1:(*^(+*一B.3,2,8:( C.3,2,4,2,2;(*^( D.3,2,8 (*^( 【青岛大学2000五、5(2分)】
( )。 A. a,c,b,d B. b, c,d,a C. c, d,b, a D. d, c,a,b 【北京航空航天大学 2000 一、3(2 分)】【北京邮电大学 1999 一、3(2 分)】 11. 设 abcdef 以所给的次序进栈,若在进栈操作时,允许退栈操作,则下面得不到的序列为 ( )。 A.fedcba B. bcafed C. dcefba D. cabdef 【南京理工大学 1996 一、9(2 分)】 12. 设有三个元素 X,Y,Z 顺序进栈(进的过程中允许出栈),下列得不到的出栈排列是 ( )。 A.XYZ B. YZX C. ZXY D. ZYX 【南京理工大学 1997 一、5(2 分)】 13. 输入序列为 ABC,可以变为 CBA 时,经过的栈操作为( )【中山大学 1999 一、8(1 分)】 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 14. 若一个栈以向量 V[1..n]存储,初始栈顶指针 top 为 n+1,则下面 x 进栈的正确操作是 ( )。 A.top:=top+1; V [top]:=x B. V [top]:=x; top:=top+1 C. top:=top-1; V [top]:=x D. V [top]:=x; top:=top-1 【南京理工大学 1998 一、13(2 分)】 15. 若栈采用顺序存储方式存储,现两栈共享空间 V[1..m],top[i]代表第 i 个栈( i =1,2) 栈顶,栈 1 的底在 v[1],栈 2 的底在 V[m],则栈满的条件是( )。 A. |top[2]-top[1]|=0 B. top[1]+1=top[2] C. top[1]+top[2]=m D. top[1]=top[2] 【南京理工大学 1999 一、14(1 分)】 16. 栈在( )中应用。【中山大学 1998 二、3(2 分)】 A. 递归调用 B. 子程序调用 C. 表达式求值 D. A,B,C 17. 一个递归算法必须包括( )。【武汉大学 2000 二、2】 A. 递归部分 B. 终止条件和递归部分 C. 迭代部分 D.终止条件和迭 代部分 18. 执行完下列语句段后,i 值为:( )【浙江大学 2000 一 、6 (3 分)】 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. 无限递归 19. 表达式 a*(b+c)-d 的后缀表达式是( )。【南京理工大学 2001 一、2(1.5 分)】 A.abcd*+- B. abc+*d- C. abc*+d- D. -+*abcd 20. 表达式 3* 2^(4+2*2-6*3)-5 求值过程中当扫描到 6 时,对象栈和算符栈为( ),其 中^为乘幂 。 A. 3,2,4,1,1;(*^(+*- B. 3,2,8;(*^- C. 3,2,4,2,2;(*^(- D. 3,2,8; (*^(- 【青岛大学 2000 五、5(2 分)】
21.设计一个判别表达式中左,右括号是否配对出现的算法,采用 )数据结构最佳 A.线性表的顺序存储结构 B.队列C.线性表的链式存储结构 D 栈 【西安电子科技大学1996一、6(2分)】 22.用链接方式存储的队列,在进行删除运算时()。【北方交通大学2001一、12(2 分)】 A.仅修改头指针B.仅修改尾指针C.头、尾指针都要修改D.头、尾指针 可能都要修改 23.用不带头结点的单链表存储队列时,其队头指针指向队头结点,其队尾指针指向队尾结 点,则在进行删除操作时()。【北京理工大学2001六、3(2分)】 A.仅修改队头指针 B.仅修改队尾指针 C.队头、队尾指针都要修改D.队头,队尾指针都可能要修改 24.递归过程或函数调用时,处理参数及返回地址,要用一种称为()的数据结构 A.队列 B.多维数组 C.栈 D.线性表 【福州大学1998 1(2分)】 25.假设以数组A[m]存放循环队列的元素,其头尾指针分别为 front和rear,则当前队列中 的元素个数为()。【北京工商大学2001一、2(3分)】 A. (rear-front+m)%m B. rear-front+1 (front-rear+m)%. D. (rear-front)%m 26.循环队列A[O.m1]存放其元素值,用 front和rear分别表示队头和队尾,则当前队 列中的元素数是()。【南京理工大学2001一、5(1.5分)】 A. (rear-front+m)%m B. rear-front+1 C. rear-front-l rear-front 27.循环队列存储在数组A[0.m]中,则入队时的操作为()。【中山大学1999、6 (1分)】 A. rear=rear+l B. rear=(rear+1)mod(m-1) C. rear=(rear+1)mod m D. rear=(rear+)mod (m+1) 28.若用一个大小为6的数组来实现循环队列,且当前rear和 front的值分别为0和3, 当从队列中删除一个元素,再加入两个元素后,rear和 front的值分别为多少?()【浙 江大学1999四、1(4分)】 A.1和5 和 C.4和2 D.5和1 9.已知输入序列为abcd经过输出受限的双向队列后能得到的输出序列有()。 A. dacb B. cadb C. dbca D. bdac E.以上答案都不对 【西安交通大学1996三、3(3分)】 30.若以1234作为双端队列的输入序列,则既不能由输入受限的双端队列得到,也不能由 输出受限的双端队列得到的输出序列是()。【西安电子科技大学1996一、5(2分)】 A.1234 413 C.4231 D.4213 31.最大容量为n的循环队列,队尾指针是rear,队头是 front,则队空的条件是 A. (rear+1)MOD n=front C. rear+l=front D. (rear-1)MOD n=front 【南京理工大学1999一、16(2分)】 32.栈和队列的共同点是()。【燕山大学2001一、1(2分)】 A.都是先进先出 B.都是先进后出 C.只允许在端点处插入和删除元素 D.没有共同点
21. 设计一个判别表达式中左,右括号是否配对出现的算法,采用( )数据结构最佳。 A.线性表的顺序存储结构 B. 队列 C. 线性表的链式存储结构 D. 栈 【西安电子科技大学 1996 一、6(2 分)】 22. 用链接方式存储的队列,在进行删除运算时( )。【北方交通大学 2001 一、12(2 分)】 A. 仅修改头指针 B. 仅修改尾指针 C. 头、尾指针都要修改 D. 头、尾指针 可能都要修改 23. 用不带头结点的单链表存储队列时,其队头指针指向队头结点,其队尾指针指向队尾结 点,则在进行删除操作时( )。【北京理工大学 2001 六、3(2 分)】 A.仅修改队头指针 B. 仅修改队尾指针 C. 队头、队尾指针都要修改 D. 队头,队尾指针都可能要修改 24. 递归过程或函数调用时,处理参数及返回地址,要用一种称为( )的数据结构。 A.队列 B.多维数组 C.栈 D. 线性表 【福州大学 1998 一、1(2 分)】 25. 假设以数组 A[m]存放循环队列的元素,其头尾指针分别为 front 和 rear,则当前队列中 的元素个数为( )。【北京工商大学 2001 一、2(3 分)】 A . (rear-front+m)%m B . rear-front+1 C . (front-rear+m)%m D.(rear-front)%m 26. 循环队列 A[0..m-1]存放其元素值,用 front 和 rear 分别表示队头和队尾,则当前队 列中的元素数是( )。【南京理工大学 2001 一、5(1.5 分)】 A. (rear-front+m)%m B. rear-front+1 C. rear-front-1 D. rear-front 27. 循环队列存储在数组 A[0..m]中,则入队时的操作为( )。【中山大学 1999 一、6 (1 分)】 A. rear=rear+1 B. rear=(rear+1) mod (m-1) C. rear=(rear+1) mod m D. rear=(rear+1)mod(m+1) 28. 若用一个大小为 6 的数组来实现循环队列,且当前 rear 和 front 的值分别为 0 和 3, 当从队列中删除一个元素,再加入两个元素后,rear 和 front 的值分别为多少?( )【浙 江大学 1999 四、1(4 分)】 A. 1 和 5 B. 2 和 4 C. 4 和 2 D. 5 和 1 29. 已知输入序列为 abcd 经过输出受限的双向队列后能得到的输出序列有( )。 A. dacb B. cadb C. dbca D. bdac E. 以上答案都不对 【西安交通大学 1996 三、3 (3 分)】 30. 若以 1234 作为双端队列的输入序列,则既不能由输入受限的双端队列得到,也不能由 输出受限的双端队列得到的输出序列是( )。【西安电子科技大学 1996 一、5(2 分)】 A. 1234 B. 4132 C. 4231 D. 4213 31. 最大容量为 n 的循环队列,队尾指针是 rear,队头是 front,则队空的条件是 ( )。 A. (rear+1) MOD n=front B. rear=front C.rear+1=front D. (rear-l) MOD n=front 【南京理工大学 1999 一、16(2 分)】 32. 栈和队列的共同点是( )。【燕山大学 2001 一、1(2 分)】 A. 都是先进先出 B. 都是先进后出 C. 只允许在端点处插入和删除元素 D. 没有共同点
33.栈的特点是(①),队列的特点是(②),栈和队列都是(③)。若进栈序 列为1,2,3,4则(④)不可能是一个出栈序列(不一定全部进栈后再出栈)若进队列 的序列为1,2,3,4则(⑤)是一个出队列序列。【北方交通大学1999一、1(5分)】 ①,②:A.先进先出 B.后进先出 C.进优于出D.出优于进 ③:A.顺序存储的线性结构B.链式存储的线性结构 C.限制存取点的线性结构D.限制存取点的非线性结构 ④,⑤:A.3,2,1,4B.3,2,4,1C.4,2,3,1D.4,3,2,1F.1,2,3,4G. 1,3,2,4 34.栈和队都是()【南京理工大学1997一、3(2分)】 A.顺序存储的线性结构 B.链式存储的非线性结构 C.限制存取点的线性结构D.限制存取点的非线性结构 35.设栈S和队列Q的初始状态为空,元素e1,e2,e3,e4,e5和e6依次通过栈S,一个 元素出栈后即进队列Q,若6个元素出队的序列是e2,e4,e3,e6,e5,el则栈S的容量至少 应该是( A.6 【南京理工大学200一、6(1.5分)】 36.用单链表表示的链式队列的队头在链表的( 位置。【清华大学1998、1(2分)】 A.链头 B.链尾 C.链 37.依次读入数据元素序列{a,b,c,d,e,f,g}进栈,每进一个元素,机器可要求下一个 元素进栈或弹栈,如此进行,则栈空时弹出的元素构成的序列是以下哪些序列?【哈尔滨工 业大学2000七(8分)】 A. d, e, c, f, b,g,a C. e, f, d, g, b, c, al D.c, d, b, e, f, a, gh 二判断题 1.消除递归不一定需要使用栈,此说法() 【中科院计算所1998二、2(2分)】【中国科技大学1998二、2(2分)】 2.栈是实现过程和函数等子程序所必需的结构。(【合肥工业大学2000二、2(1分)】 3.两个栈共用静态存储空间,对头使用也存在空间溢出问题。()【青岛大学2000四 2(1分)】 4.两个栈共享一片连续内存空间时,为提高内存利用率,减少溢出机会,应把两个栈的栈 底分别设在这片内存空间的两端。()【上海海运学院1998、4(1分)】 5.即使对不含相同元素的同一输入序列进行两组不同的合法的入栈和出栈组合操作,所得 的输出序列也一定相同。()【北京邮电大学1999二、4(2分)】 6.有n个数顺序(依次)进栈,出栈序列有Cn种,Cn=[1/(n+1)]*(2n)!/[n!)*(n!)]。 【北京邮电大学1998、3(2分)】 7.栈与队列是一种特殊操作的线性表。 )【青岛大学2001四、3(1分)】 8.若输入序列为1,2,3,4,5,6,则通过一个栈可以输出序列3,2,5,6,4,1.() 【上海海运学院1995、2(1分)1997一、3(1分)】 9.栈和队列都是限制存取点的线性结构。()【中科院软件所1999六、(5)(2分)】 10.若输入序列为1,2,3,4,5,6,则通过一个栈可以输出序列1,5,4,6,2,3。() 【上海海运学院1999、3(1分)】 11.任何一个递归过程都可以转换成非递归过程。()【上海交通大学1998
33. 栈的特点是( ① ),队列的特点是( ② ),栈和队列都是( ③ )。若进栈序 列为 1,2,3,4 则( ④ )不可能是一个出栈序列(不一定全部进栈后再出栈);若进队列 的序列为 1,2,3,4 则( ⑤ )是一个出队列序列。【北方交通大学 1999 一、1(5 分)】 ①, ②: A. 先进先出 B. 后进先出 C. 进优于出 D. 出优于进 ③: A.顺序存储的线性结构 B.链式存储的线性结构 C.限制存取点的线性结构 D.限制存取点的非线性结构 ④, ⑤: A. 3,2,1,4 B. 3,2,4,1 C. 4,2,3,1 D. 4,3,2,1 F. 1,2,3,4 G. 1,3,2,4 34. 栈和队都是( )【南京理工大学 1997 一、3(2 分)】 A.顺序存储的线性结构 B. 链式存储的非线性结构 C. 限制存取点的线性结构 D. 限制存取点的非线性结构 35. 设栈 S 和队列 Q 的初始状态为空,元素 e1,e2,e3,e4,e5 和 e6 依次通过栈 S,一个 元素出栈后即进队列 Q,若 6 个元素出队的序列是 e2,e4,e3,e6,e5,e1 则栈 S 的容量至少 应该是( )。 A. 6 B. 4 C. 3 D. 2 【南京理工大学 2000 一、6(1.5 分)】 36. 用单链表表示的链式队列的队头在链表的( )位置。【清华大学 1998 一、1(2 分)】 A.链头 B.链尾 C.链中 37. 依次读入数据元素序列{a,b,c,d,e,f,g}进栈,每进一个元素,机器可要求下一个 元素进栈或弹栈,如此进行,则栈空时弹出的元素构成的序列是以下哪些序列?【哈尔滨工 业大学 2000 七(8 分)】 A.{d ,e,c,f,b,g,a} B. {f,e,g,d,a,c,b} C. {e,f,d,g,b,c,a} D. {c,d,b,e,f,a,g} 二 判断题 1. 消除递归不一定需要使用栈,此说法( ) 【中科院计算所 1998 二、2(2 分)】【中国科技大学 1998 二、2(2 分)】 2. 栈是实现过程和函数等子程序所必需的结构。( )【合肥工业大学 2000 二、2(1 分)】 3. 两个栈共用静态存储空间,对头使用也存在空间溢出问题。( )【青岛大学 2000 四、 2(1 分)】 4.两个栈共享一片连续内存空间时,为提高内存利用率,减少溢出机会,应把两个栈的栈 底分别设在这片内存空间的两端。( )【上海海运学院 1998 一、4(1 分)】 5. 即使对不含相同元素的同一输入序列进行两组不同的合法的入栈和出栈组合操作,所得 的输出序列也一定相同。( )【北京邮电大学 1999 二、4(2 分)】 6. 有 n 个数顺序(依次)进栈,出栈序列有 Cn 种,Cn=[1/(n+1)]*(2n)!/[(n!)*(n!)]。 ( ) 【北京邮电大学 1998 一、3(2 分)】 7. 栈与队列是一种特殊操作的线性表。( )【青岛大学 2001 四、3 (1 分)】 8. 若输入序列为 1,2,3,4,5,6,则通过一个栈可以输出序列 3,2,5,6,4,1. ( ) 【上海海运学院 1995 一、2(1 分) 1997 一、3(1 分)】 9. 栈和队列都是限制存取点的线性结构。( )【中科院软件所 1999 六、(5)(2 分)】 10.若输入序列为 1,2,3,4,5,6,则通过一个栈可以输出序列 1,5,4,6,2,3。( ) 【上海海运学院 1999 一、3(1 分)】 11. 任何一个递归过程都可以转换成非递归过程。( )【上海交通大学 1998 一、3(1
分)】 12.只有那种使用了局部变量的递归过程在转换成非递归过程时才必须使用栈。( 【上海交通大学1998一、4(1分)】 13.队列是一种插入与删除操作分别在表的两端进行的线性表,是一种先进后出型结构。 【上海海运学院1998、3(1分)】 14.通常使用队列来处理函数或过程的调用。()【南京航空航天大学1997一、5(1 分)】 15.队列逻辑上是一个下端和上端既能增加又能减少的线性表。()【上海交通大学1998 2】 16.循环队列通常用指针来实现队列的头尾相接。()【南京航空航天大学1996六、 (1分)】 17.循环队列也存在空间溢出问题。()【青岛大学2002一、2(1分)】 18.队列和栈都是运算受限的线性表,只允许在表的两端进行运算。()【长沙铁道学院19 5(1分)】 19.栈和队列都是线性表,只是在插入和删除时受到了一些限制。()【北京邮电大学 2002一、3(1分)】 20.栈和队列的存储方式,既可以是顺序方式,又可以是链式方式。() 【上海海运学院1996一、2(1分)1999一、2(1分)】 三填空题 1.栈是的线性表,其运算遵循的原则。【北京科技大学1997一、3】 是限定仅在表尾进行插入或删除操作的线性表。【燕山大学1998一、3(1分)】 3.一个栈的输入序列是:1,2,3则不可能的栈输出序列是 。【中国人民大学2001 、1(2分)】 4.设有一个空栈,栈顶指针为1000H(十六进制),现有输入序列为1,2,3,4,5,经过 PUSH,PUSH,POP,PUSH,POP,PUSH,PUSH之后,输出序列是 ,而栈顶指针值是 设栈为顺序栈,每个元素占4个字节。【西安电子科技大学1998二、1(4分)】 5.当两个栈共享一存储区时,栈利用一维数组 stack(1,n)表示,两栈顶指针为top[l]与 top[2],则当栈1空时,top[1]为 栈2空时,top[2]为 ,栈满时为 【南京理工大学1997三、1(3分)】 6.两个栈共享空间时栈满的条件 。【中山大学1998、3(1分)】 7.在作进栈运算时应先判别栈是否_();在作退栈运算时应先判别栈是否_(2):当栈中元 素为n个,作进栈运算时发生上溢,则说明该栈的最大容量为_(3) 为了增加内存空间的利用率和减少溢出的可能性,由两个栈共享一片连续的空间时,应 将两栈的(4)分别设在内存空间的两端,这样只有当_(5)时才产生溢出。【山东工业大学 1994一、1(5分)】 8.多个栈共存时,最好用 作为存储结构。【南京理工大学2001二、7(2分)】 9.用S表示入栈操作,X表示出栈操作,若元素入栈的顺序为1234,为了得到1342出栈顺 序,相应的S和X的操作串为 【西南交通大学2000一、5】 10.顺序栈用data[1.n]存储数据,栈顶指针是top,则值为x的元素入栈的操作是 【合肥工业大学2001三、2(2分)】 11.表达式23+(12*3-2)/4+34*5/7)+108/9的后缀表达式是 。【中山大学1998 4(1分)】
分)】 12. 只有那种使用了局部变量的递归过程在转换成非递归过程时才必须使用栈。( ) 【上海交通大学 1998 一、4(1 分)】 13. 队列是一种插入与删除操作分别在表的两端进行的线性表,是一种先进后出型结构。 ( ) 【上海海运学院 1998 一、3(1 分)】 14. 通常使用队列来处理函数或过程的调用。( )【南京航空航天大学 1997 一、5(1 分)】 15. 队列逻辑上是一个下端和上端既能增加又能减少的线性表。( )【上海交通大学 1998 一、2】 16. 循环队列通常用指针来实现队列的头尾相接。( )【南京航空航天大学 1996 六、1 (1 分)】 17. 循环队列也存在空间溢出问题。( )【青岛大学 2002 一、2 (1 分)】 18. 队列和栈都是运算受限的线性表,只允许在表的两端进行运算。( )【长沙铁道学院 1997 一、5(1 分)】 19. 栈和队列都是线性表,只是在插入和删除时受到了一些限制。( )【北京邮电大学 2002 一、3(1 分)】 20. 栈和队列的存储方式,既可以是顺序方式,又可以是链式方式。( ) 【上海海运学院 1996 一、2(1 分) 1999 一、2(1 分)】 三 填空题 1.栈是_______的线性表,其运算遵循_______的原则。【北京科技大学 1997 一、3】 2._______是限定仅在表尾进行插入或删除操作的线性表。【燕山大学 1998 一、3 (1 分)】 3. 一个栈的输入序列是:1,2,3 则不可能的栈输出序列是_______。【中国人民大学 2001 一、1(2 分)】 4. 设有一个空栈,栈顶指针为 1000H(十六进制),现有输入序列为 1,2,3,4,5,经过 PUSH,PUSH,POP,PUSH,POP,PUSH,PUSH 之后,输出序列是_______,而栈顶指针值是_______H。 设栈为顺序栈,每个元素占 4 个字节。【西安电子科技大学 1998 二、1(4 分)】 5. 当两个栈共享一存储区时,栈利用一维数组 stack(1,n)表示,两栈顶指针为 top[1]与 top[2],则当栈 1 空时,top[1]为_______,栈 2 空时 ,top[2]为_______,栈满时为_______。 【南京理工大学 1997 三、1(3 分)】 6.两个栈共享空间时栈满的条件_______。【中山大学 1998 一、3(1 分)】 7.在作进栈运算时应先判别栈是否_(1)_;在作退栈运算时应先判别栈是否_(2)_;当栈中元 素为 n 个,作进栈运算时发生上溢,则说明该栈的最大容量为_(3)_。 为了增加内存空间的利用率和减少溢出的可能性,由两个栈共享一片连续的空间时,应 将两栈的_(4)_分别设在内存空间的两端,这样只有当_(5)_时才产生溢出。【山东工业大学 1994 一、1(5 分)】 8. 多个栈共存时,最好用_______作为存储结构。【南京理工大学 2001 二、7(2 分)】 9.用 S 表示入栈操作,X 表示出栈操作,若元素入栈的顺序为 1234,为了得到 1342 出栈顺 序,相应的 S 和 X 的操作串为_______。【西南交通大学 2000 一、5】 10. 顺序栈用data[1..n]存储数据,栈顶指针是top,则值为x的元素入栈的操作是_______。 【合肥工业大学 2001 三、2 (2 分)】 11.表达式 23+((12*3-2)/4+34*5/7)+108/9 的后缀表达式是_______。【中山大学 1998 一、 4(1 分)】
12.循环队列的引入,目的是为了克服 。【厦门大学2001一、1(14/8分)】 13.用下标0开始的N元数组实现循环队列时,为实现下标变量M加1后在数组有效下标范 围内循环,可采用的表达式是:M:= 填 PASCAL语言,C语言的考生不填):M (填C语言, PASCAL语言的考生不填)。【西南交通大学2000一、7】 又称作先进先出表。【重庆大学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】 循环队列用数组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:=l;ch:=(1 WhILE ch<>’@’D BEGIN Case ch oF WhILE ch<>’,,DO BEGIN x:=x*10+ord(ch)-ord(“0’) i: =i+l: ch: END x: =pop (s); x: =pop(s) *’:x:=pop(s)*pop(s) '/' x: =pop(s): x: =pop (s)/x ENDCASE
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: =ali] 算术表达式求值的流程,其中OPTR为算术符栈,OPND为操作数栈, precede( perl, oper2)是比较运算符优先级别的函数, operate(opndl,oper,opnd2)为两操作数的运算结果 函数。(#表示运算起始和终止符号)【西北工业大学1999六、2(7分)】 FUNCtIoN exp reduced: operandtype INITSTACK(OPTR): PUSH(OPTR"#"): INITSTACK (OPND): read(w) WHILE NOT((='')AND (GETTOP(OPTR)='#')D IF NOT w in op THen PUSH (OPND, w) ELSE CASE precede(GETToP(OPTR), w)OF read(w): read(w): >' [theta: =POP(OPTR); b: =POP(OPND); a: =POP (OPND); (3) ENDC RETURN (GETTOP(OPND)) ENDE 26.根据需要,用适当的语句填入下面算法的 问题:设有n件物品,重量分别为W,w2,W,…,w和一个能装载总重量为T的背包。能 否从n件物品中选择若干件恰好使它们的重量之和等于T。若能,则背包问题有解,否则无 解。解此问题的算法如下 FUNCTION kanp stack (VAR stack, w: ARRAY [1. n] OF real; VAR top: integer T: real): boolean; w[l:n]存放n件物品的重量,依次从中取出物品放入背包中,检查背包重量,若不 超过T,则装入,否则弃之,取下一个物品试之。若有解则返回函数值true,否则返回 false} BEGIN top:=0;i:=1 i指示待选物品} WHILE (1) AND (2 [IF(3) then [top: =(5) stack[top]:=i;{第i件物品装入背包} IF T=0 THEN RETURN((6) ){背包问题有解 elSe IF (i=n) anD (top>0) THEN[i:=(7);{取出栈顶物品} ];{恢复T值} i:=i+1 准备挑选下一件物品} RETURN(10) 背包无解} END 【北京邮电大学1996四(10分)】 四应用题
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 '':[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 (i0) THEN [i:=(7)_______;{取出栈顶物品} top:= (8)_______ ;T:= (9)_______ ]; {恢复 T 值} i:=i+1 {准备挑选下一件物品} ]; ]; RETURN((10)_______) {背包无解} END; 【北京邮电大学 1996 四(10 分)】 四 应用题
1.名词解释:栈。【燕山大学1999一、1(2分)】【吉林工业大学1999一、3(2分)】 2.名词解释:队列【大连海事大学1996一、6(1分 3.什么是循环队列?【哈尔滨工业大学2001三、2(3分)】【河南大学1998一、4(3 分)】 4.假设以S和X分别表示入栈和出栈操作,则对初态和终态均为空的栈操作可由S和X组 成的序列表示(如SXSX)。 (1)试指出判别给定序列是否合法的一般规则。 (2)两个不同合法序列(对同一输入序列)能否得到相同的输出元素序列?如能得到 请举列说明。 【东南大学1992二(10分)】 5.有5个元素,其入栈次序为:A,B,C,D,E,在各种可能的出栈次序中,以元素C,D 最先出栈(即C第一个且D第二个出栈)的次序有哪几个?【西南交通大学2000 6.如果输入序列为123456,试问能否通过栈结构得到以下两个序列:435612和1 35426;请说明为什么不能或如何才能得到。【武汉交通科技大学1996二、3(3分)】 7.若元素的进栈序列为:A、B、C、D、E,运用栈操作,能否得到出栈序列B、C、A、E、D 和D、B、A、C、E?为什么?【北京科技大学1998、2】 8.设输入序列为a,b,c,d,试写出借助一个栈可得到的两个输出序列和两个不能得到的输 出序列。 【北京科技大学2001一、4(2分)】 9.设输入序列为2,3,4,5,6,利用一个栈能得到序列2,5,3,4,6吗?栈可以用单 链表实现吗? 【山东师范大学1996五、4(2分)】 10.试证明:若借助栈由输入序列1,2,…,n得到输出序列为P,P,…,P。(它是输入序列的 个排列),则在输出序列中不可能出现这样的情形:存在着i<j<k,使PP<P。【上海交通 大学1998二(15分)】 11.设一数列的输入顺序为123456,若采用堆栈结构,并以A和D分别表示入栈和出栈操 作,试问通过入出栈操作的合法序列 1)能否得到输出顺序为325641的序列。(5分) (2)能否得到输出顺序为154623的序列。(5分)【北方交通大学1995(10分)】 2.(1)什么是递归程序? (2)递归程序的优、缺点是什么? (3)递归程序在执行时,应借助于什么来完成? (4)递归程序的入口语句、出口语句一般用什么语句实现?【大连海事大学1996 4(4分)】 13.设有下列递归算法 FUNCTION vol(n:integer):integer VAR x: integer BEGIN IF n=0 THEN vol: =0 ELSe BEGIN read (x): vol: =vol(n-1)+x: END END 如该函数被调用时,参数n值为4,读入的x值依次为5,3,4,2,函数调用结束时返回值vol 为多少?用图示描述函数执行过程中,递归工作栈的变化过程。【北京工业大学1998四(10 分)】 14.当过程P递归调用自身时,过程P内部定义的局部变量在P的2次调用期间是否占用同
1. 名词解释:栈。【燕山大学 1999 一、1(2 分)】【吉林工业大学 1999 一、3(2 分)】 2. 名词解释:队列【大连海事大学 1996 一、6 ( 1 分 )】 3. 什么是循环队列?【哈尔滨工业大学 2001 三、2(3 分)】【河南大学 1998 一、4(3 分)】 4. 假设以 S 和 X 分别表示入栈和出栈操作,则对初态和终态均为空的栈操作可由 S 和 X 组 成的序列表示(如 SXSX)。 (1)试指出判别给定序列是否合法的一般规则。 (2)两个不同合法序列(对同一输入序列)能否得到相同的输出元素序列?如能得到, 请举列说明。 【东南大学 1992 二(10 分)】 5. 有 5 个元素,其入栈次序为:A,B,C,D,E,在各种可能的出栈次序中,以元素 C,D 最先出栈(即 C 第一个且 D 第二个出栈)的次序有哪几个?【西南交通大学 2000 二、1】 6. 如果输入序列为 1 2 3 4 5 6,试问能否通过栈结构得到以下两个序列:4 3 5 6 1 2 和 1 3 5 4 2 6;请说明为什么不能或如何才能得到。【武汉交通科技大学 1996 二、3 (3 分)】 7. 若元素的进栈序列为:A、B、C、D、E,运用栈操作,能否得到出栈序列 B、C、A、E、D 和 D、B、A、C、E?为什么?【北京科技大学 1998 一、2】 8. 设输入序列为 a,b,c,d,试写出借助一个栈可得到的两个输出序列和两个不能得到的输 出序列。 【北京科技大学 2001 一、4(2 分)】 9. 设输入序列为 2,3,4,5,6,利用一个栈能得到序列 2,5,3,4,6 吗?栈可以用单 链表实现吗? 【山东师范大学 1996 五、4(2 分)】 10. 试证明:若借助栈由输入序列 1,2,…,n 得到输出序列为 P1,P2,…,Pn(它是输入序列的 一个排列),则在输出序列中不可能出现这样的情形:存在着 i<j<k,使 Pj<Pk<Pi。【上海交通 大学 1998 二(15 分)】 11. 设一数列的输入顺序为 123456,若采用堆栈结构,并以 A 和 D 分别表示入栈和出栈操 作,试问通过入出栈操作的合法序列。 (1) 能否得到输出顺序为 325641 的序列。(5 分) (2) 能否得到输出顺序为 154623 的序列。(5 分) 【北方交通大学 1995 一(10 分)】 12.(1) 什么是递归程序? (2) 递归程序的优、缺点是什么? (3) 递归程序在执行时,应借助于什么来完成? (4) 递归程序的入口语句、出口语句一般用什么语句实现?【大连海事大学 1996 二、 4(4 分)】 13. 设有下列递归算法: FUNCTION vol(n:integer):integer; VAR x :integer: BEGIN IF n=0 THEN vol:=0 ELSE BEGIN read(x);vol:=vol(n-1)+x;END; END; 如该函数被调用时,参数 n 值为 4,读入的 x 值依次为 5,3,4,2,函数调用结束时返回值 vol 为多少?用图示描述函数执行过程中,递归工作栈的变化过程。【北京工业大学 1998 四 (10 分)】 14. 当过程 P 递归调用自身时,过程 P 内部定义的局部变量在 P 的 2 次调用期间是否占用同
数据区?为什么?【山东师范大学1999、4(4分)】 15.试推导出当总盘数为n的 Hanoi塔的移动次数。【北京邮电大学2001四、3(5分)】 16.对下面过程写出调用P(3)的运行结果 PROCEdURE p (w: integer IF W>0 THEN BEGIN writeln(w);{输出W (w-1) END: 【西北大学2001三、7】 17.用一个数组S(设大小为MAX)作为两个堆栈的共享空间。请说明共享方法,栈满/栈空 的判断条件,并用C或 PASCAL设计公用的入栈操作push(i,x),其中i为0或1,用于表 示栈号,x为入栈值。 【浙江大学1998五、2(7分)】 18.简述下列程序段的功能 proc algo(vAR S: stack: k: integer) VAR T: stack: temp integer WHILE NOT empty(S)DO [temp: =POP(S): IF temp>k THEN PUSH (T, temp) WHILE NOT empty(r) Do [temp: =POP (T): PUSH(S, temp) 【山东科技大学2002一、1(4分)】 19.用栈实现将中缀表达式8-(3+5)*(5-6/2)转换成后缀表达式,画出栈的变化过程图 【南京航空航天大学2001五(10分)】 20.在表达式中,有的运算符要求从右到左计算,如A*B*C的计算次序应为(A**(B**C), 这在由中缀生成后缀的算法中是怎样实现的?(以*为例说明)【东南大学1993一、2(6分) 1997一、1(8分)】 21.有递归算法如下: FUNCTION sum (n: integer): intger BEGIN IF n=O THEN BnN N read (x): sum: =sum(n-1)+x END END 设初值n=4,读入x=4,9,6,2 问:(1)若x为局部变量时:该函数递归结束后返回调用程序的sum=?并画出在递归过 程中栈状态的变化过程; (2)若ⅹ为全程变量递归结束时返回调用程序的sum=?【北京邮电大学1997一(10 分)】 22.画出对算术表达式A-B*C/D-E↑F求值时操作数栈和运算符栈的变化过程。 【东南大学2000-、3(6分)】 23.计算算术表达式的值时,可用两个栈作辅助工具。对于给出的一个表达式,从左向右扫 描它的字符,并将操作数放入栈S1中,运算符放入栈S2中,但每次扫描到运算符时,要把
一数据区?为什么?【山东师范大学 1999 一、4 (4 分)】 15. 试推导出当总盘数为 n 的 Hanoi 塔的移动次数。【北京邮电大学 2001 四、3 (5 分)】 16. 对下面过程写出调用 P(3)的运行结果。 PROCEDURE p(w:integer); BEGIN IF w>0 THEN BEGIN p(w-1); writeln(w);{输出 W} p(w-1) END; END; 【西北大学 2001 三、7】 17. 用一个数组 S(设大小为 MAX)作为两个堆栈的共享空间。请说明共享方法,栈满/栈空 的判断条件,并用 C 或 PASCAL 设计公用的入栈操作 push(i,x),其中 i 为 0 或 1,用于表 示栈号,x 为入栈值。 【浙江大学 1998 五、2 (7 分)】 18. 简述下列程序段的功能。 PROC algo(VAR S : stack; k:integer); VAR T: stack; temp: integer; WHILE NOT empty(S) DO [temp:=POP(S); IF temp<>k THEN PUSH(T,temp)]; WHILE NOT empty(T) DO [temp:=POP(T);PUSH(S,temp)]; 【山东科技大学 2002 一、1(4 分)】 19. 用栈实现将中缀表达式 8-(3+5)*(5-6/2)转换成后缀表达式,画出栈的变化过程图。 【南京航空航天大学 2001 五 (10 分)】 20. 在表达式中,有的运算符要求从右到左计算,如 A**B**C 的计算次序应为(A**(B**C)), 这在由中缀生成后缀的算法中是怎样实现的?(以**为例说明)【东南大学 1993 一、2(6 分) 1997 一、1(8 分)】 21. 有递归算法如下: FUNCTION sum (n:integer):intger; BEGIN IF n=0 THEN sum:=0 ELSE BEGIN read(x);sum:=sum(n-1)+x END; END; 设初值 n=4,读入 x=4,9,6,2 问:(1) 若 x 为局部变量时;该函数递归结束后返回调用程序的 sum=? 并画出在递归过 程中栈状态的变化过程; (2) 若 x 为全程变量递归结束时返回调用程序的 sum=?【北京邮电大学 1997 一(10 分)】 22. 画出对算术表达式 A-B*C/D-E↑F 求值时操作数栈和运算符栈的变化过程。 【东南大学 2000 一、3(6 分)】 23. 计算算术表达式的值时,可用两个栈作辅助工具。对于给出的一个表达式,从左向右扫 描它的字符,并将操作数放入栈 S1 中,运算符放入栈 S2 中,但每次扫描到运算符时,要把
它同S2的栈顶运算符进行优先级比较,当扫描到的运算符的优先级不高于栈顶运算符的优 先级时,取出栈S1的栈顶和次栈顶的两个元素,以及栈S2的栈顶运算符进行运算将结果放 入栈S1中(得到的结果依次用T1、T2等表示)为方便比较,假设栈S2的初始栈顶为( 运算符的优先级低于加、减、乘、除中任何一种运算)。现假设要计算表达式:A-B*C/D+/F 写出栈S1和S2的变化过程。【山东科技大学2001一、4(7分)】 24.有字符串次序为3*y-a/y2,利用栈,给出将次序改为3y-*ay2/-的操作步骤。(可用 X代表扫描该字符串过程中顺序取一个字符进栈的操作,用S代表从栈中取出一个字符加入 到新字符串尾的出栈操作。例如,ABC变为BCA的操作步骤为 XXSXSS)【东北大学2001 4(4分)】 25.内存中一片连续空间(不妨假设地址从1到m)提供给两个栈S1和S2使用,怎样分配 这部分存储空间,使得对任一个栈,仅当这部分空间全满时才发生上溢【东北大学2000一、 1(3分)】 26.将两个栈存入数组V[1.m应如何安排最好?这时栈空、栈满的条件是什么?【东南大 学1998一、5】 27.在一个算法中需要建立多个堆栈时可以选用下列三种方案之一,试问:这三种方案之间 相比较各有什么优缺点? (1)分别用多个顺序存储空间建立多个独立的堆栈 (2)多个堆栈共享一个顺序存储空间 (3)分别建立多个独立的链接堆栈。【北京航空航天大学1998、6(4分)】 28.在某程序中,有两个栈共享一个一维数组空间 SPACE[N]、 SPACE[O]、 SPACE[N-1]分别 是两个栈的栈底 (1)对栈1、栈2,试分别写出(元素x)入栈的主要语句和出栈的主要语句。 (2)对栈1、栈2,试分别写出栈满、栈空的条件。【北京理工大学1999二、2(8分)】 29.简述顺序存储队列的假溢出的避免方法及队列满和空的条件。【山东大学2000一、2(4 分)】 30.举例说明顺序队的“假溢出”现象,并给出解决方案。【福州大学1998三、5(6分)】 31.怎样判定循环队列的空和满?【燕山大学1999二、3(4分)】 32.简要叙述循环队列的数据结构,并写出其初始状态、队列空、队列满时的队首指针与队 尾指针的值 【南京航空航天大学1995七(5分)】 33.利用两个栈sl,s2模拟一个队列时,如何用栈的运算实现队列的插入,删除以及判队空 运算。请简述这些运算的算法思想。【北京邮电大学1992一、1东南大学1999、1(7 分)】 4.一个循环队列的数据结构描述如下: TYPE sequeuetp=RECORD elem: ARRAY[I. MAXSIZE] OF elemtp: front, rear: 0., MAXSIZE END 给出循环队列的队空和队满的判断条件,并且分析一下该条件对队列实际存储空间大小的影 响,如果为了不损失存储空间,你如何改进循环队列的队空和队满的判断条件?【西北工业 大学1999三(8分)】 35.如果用一个循环数组q[0..m1]表示队列时,该队列只有一个队列头指针 front,不设 队列尾指针rear,而改置计数器 count用以记录队列中结点的个数 (1)编写实现队列的三个基本运算:判空、入队、出队(3分)
它同 S2 的栈顶运算符进行优先级比较,当扫描到的运算符的优先级不高于栈顶运算符的优 先级时,取出栈 S1 的栈顶和次栈顶的两个元素,以及栈 S2 的栈顶运算符进行运算将结果放 入栈 S1 中(得到的结果依次用 T1、T2 等表示)。为方便比较,假设栈 S2 的初始栈顶为®(® 运算符的优先级低于加、减、乘、除中任何一种运算)。现假设要计算表达式: A-B*C/D+E/F。 写出栈 S1 和 S2 的变化过程。【山东科技大学 2001 一、4 (7 分)】 24. 有字符串次序为 3*-y-a/y^2,利用栈,给出将次序改为 3y-*ay2^/-的操作步骤。(可用 X 代表扫描该字符串过程中顺序取一个字符进栈的操作,用 S 代表从栈中取出一个字符加入 到新字符串尾的出栈操作。例如,ABC 变为 BCA 的操作步骤为 XXSXSS)【东北大学 2001 一、 4 ( 4 分)】 25. 内存中一片连续空间(不妨假设地址从 1 到 m)提供给两个栈 S1 和 S2 使用,怎样分配 这部分存储空间,使得对任一个栈,仅当这部分空间全满时才发生上溢。【东北大学 2000 一、 1 (3 分)】 26. 将两个栈存入数组 V[1..m]应如何安排最好?这时栈空、栈满的条件是什么?【东南大 学 1998 一、5】 27. 在一个算法中需要建立多个堆栈时可以选用下列三种方案之一,试问:这三种方案之间 相比较各有什么优缺点? (1)分别用多个顺序存储空间建立多个独立的堆栈; (2)多个堆栈共享一个顺序存储空间; (3)分别建立多个独立的链接堆栈。【北京航空航天大学 1998 一、6(4 分)】 28.在某程序中,有两个栈共享一个一维数组空间 SPACE[N]、SPACE[0]、SPACE[N-1] 分别 是两个栈的栈底。 (1)对栈 1、栈 2,试分别写出(元素 x)入栈的主要语句和出栈的主要语句。 (2)对栈 1、栈 2,试分别写出栈满、栈空的条件。【北京理工大学 1999 二、2(8 分)】 29. 简述顺序存储队列的假溢出的避免方法及队列满和空的条件。【山东大学 2000 一、2 (4 分)】 30. 举例说明顺序队的“假溢出”现象,并给出解决方案。【福州大学 1998 三、5 (6 分)】 31. 怎样判定循环队列的空和满?【燕山大学 1999 二、3(4 分)】 32. 简要叙述循环队列的数据结构,并写出其初始状态、队列空、队列满时的队首指针与队 尾指针的值。 【南京航空航天大学 1995 七(5 分)】 33. 利用两个栈 sl,s2 模拟一个队列时,如何用栈的运算实现队列的插入,删除以及判队空 运算。请简述这些运算的算法思想。【北京邮电大学 1992 一、1】【东南大学 1999 一、1 (7 分)】 34.一个循环队列的数据结构描述如下: TYPE sequeuetp=RECORD elem:ARRAY[1..MAXSIZE] OF elemtp; front,rear:0..MAXSIZE; END; 给出循环队列的队空和队满的判断条件,并且分析一下该条件对队列实际存储空间大小的影 响,如果为了不损失存储空间,你如何改进循环队列的队空和队满的判断条件?【西北工业 大学 1999 三 (8 分)】 35. 如果用一个循环数组 q[0..m-1]表示队列时,该队列只有一个队列头指针 front,不设 队列尾指针 rear,而改置计数器 count 用以记录队列中结点的个数。 (1)编写实现队列的三个基本运算:判空、入队、出队(3 分)