admin 管理员组

文章数量: 1184232


2024年4月30日发(作者:php权限管理系统)

数据结构练习(栈和队列)

一、选择题

1.有5个元素a,b,c,d,e依次进栈,允许任何时候出栈,则可能的出栈序列是 C 。

A.baecd B.dceab C.abedc D.aebcd

2.下列有关递归的叙述,不正确的是 B 。

A.在计算机系统内,执行递归函数是通过自动使用栈来实现的。

B.在时间和空间效率方面,递归算法比非递归算法好。

C.递归函数的求解过程分为递推(进栈)和回推(出栈)两个阶段。

D.在递归函数中必须有终止递归的条件。

3.栈和队列均属于哪一种逻辑结构 A 。

A.线性结构 B.顺序结构 C.非线性结构 D.链表结构

4.设输入元素为1、2、3、P和A,输入次序为123PA,元素经过栈后得到各种输出序列,

则可以作为高级语言变量名的序列有 B 种。

A.4 B.5 C.6 D.7

5.一个队列的入队序列为a,b,c,d,则该队列的输出序列是 B 。

A.dcba B.abcd C.adcb D.cbda

6. 在一个链式队列中,假设f和r分别为队头和队尾指针,则插入s所指结点的运算是

B 。

A. =s; f=s; B. =s; r=s;

C. =s; r=s; D. =f; f=s;

7.如果5个元素出栈的顺序是1、2、3、4、5,则进栈的顺序可能是 C 。

A.3、5、4、1、2 B.1、4、5、3、2

C. 5、4、1、3、2 D.2、4、3、1、5

8.已知一个栈的进栈序列为1,2,3,…,n,其出栈输出序列是p1,p2,p3,…,pn。

若p1=3,则p2的值 D 。

A.一定是2 B.一定是1 C.可能是1 D.可能是2

9.以1,2,3,…,n的顺序进队列,则可能的出队序列有 A 种。

A.1 B.n C.n(n+1)/2 D.

10.在计算递归函数时,如不用递归过程,应借助于 B 这种数据结构。

A. 线性表 B. 栈 C. 队列 D. 双向队列

二、填空题

1.栈和队列是一种特殊的线性表,其特殊性体现在是 操作受限 线性表。

设现有元素e1,e2,e3,e4,e5和e6依次进栈,若出栈的序列是e2,e4,e3,e6,e5,e1,则

栈S的容量至少是 3 。

2.顺序循环队列中,设队头指针为front,队尾指针为rear,队中最多可有MAX个元素,

采用少用一个存储单元的方法区分队满与队空问题,则元素入队列时队尾指针的变化为

rear=(rear+1)%MAX ;元素出队列时队头指针的变化为

front=(front+1)%MAX ;队列中的元素个数为 (rear-front+ MAX) %MAX 。 队

满的判别条件为为 (rear+1)%MAX=front ,队空的判别条件为

rear==front 。

3.一个中缀表达式 a+b*(a+c)-c/d的前缀表达式为 -+a*b+ac/cd ,后缀表达

式为 abac+*+cd/- 。一个后缀表达式 2 1 + 4 2 - * 3 +的值为 9 。

4.下列函数的功能是 计算1到n的平方和 。

def sum(n):

if n==0:

return 0

else:

return sum(n-1)+n*n

5.下列算法的功能 判断输入的字符串是否为回文 。

def func():

creatstack(S) #初始化构造一个空栈S

creatqueue(Q) #初始化构造一个空队列Q

str=input(“输入一个字符串:”)

for ch in str:

push(ch)

enqueue(ch)

while not isempty(S):

a=pop()

b=dequeue()

if a!=b:

return 0

return 1

三、解答题

1.用一维数组a[7] 顺序存储一个循环队列,队首和队尾指针分别用front和rear表示,

当前队列中已有5个元素:22,30,16,36,58,其中22是队首, front值为5,请

画出对应的存储状态图,当连续做两次出队运算后,再做两次入队运算,让元素80,55

依次进队,请再画出对应的存储状态图。

22

58

36

16

30

55

80

58

36


本文标签: 队列 元素 递归 序列 指针