数据结构期末考试(题集)

内容发布更新时间 : 2025/6/20 8:29:30星期一 下面是文章的全部内容请认真阅读。

8 顺序栈

选择题

(1) 在一个具有n个单元的顺序栈中,假定以地址低端(即下标为0的单元)作为

栈底,以top作为栈顶指针,当出栈时,top的变化为( )。 A.不变 B.top=0 C.top-1 D.top=top+1

(2) 设数组S[n]作为两个栈S1和S2的存储空间,对任何一个栈只有当S[n]全满

时才不能进行进栈操作。为这两个栈分配空间的最佳方案是( )。 A.S1的栈底位置为0,S2的栈底位置为n-1 B.S1的栈底位置为0,S2的栈底位置为n/2 C.S1的栈底位置为0,S2的栈底位置为n D.S1的栈底位置为0,S2的栈底位置为1

(3) 为了增加内存空间的利用率和减少溢出的可能性,两个栈共享一片连续的内存

空间时,应将两栈的栈底分别设在这片内存空间的两端,这样,当( )时才产生上溢。

A.两个栈的栈顶同时到达栈空间的中心点 B.其中一个栈的栈顶到达栈空间的中心点 C.两个栈的栈顶在栈空间的某一位置相遇

D.两个栈均不空,且一个栈的栈顶到达另一个栈的栈底

(4) 两个栈共享一个数组空间的好处是( )。 A.减少存取时间,降低发生上溢的可能性 B.节省存储空间,降低发生上溢的可能性 C.减少存取时间,降低发生下溢的可能性 D.节省存储空间,降低发生下溢的可能性

算法设计题

(5) 假设以I和O分别表示入栈和出栈操作。栈的初态和终态均为空,入栈和出

栈的操作序列可表示为仅有I和O组成的序列,称可以操作的序列为合法序列,否则称为非合法序列。

①下面所示的序列中哪些是合法的?

②通过对①的分析,写出一个算法,判定所给的操作序列是否合法。若合法,返回true,否则返回false(假定被判定的操作序列已存入一维数组中)。

(6) 下面的算法将一个整数e压入到堆栈S,请在空格处填上适当的语句实现该操

作。

Typedef struct { int *base; int top; int stacksize; }SqStack;

21

int Push(SqStack S,int e) { if ( ① ) { S.base=(int *)realloc(S.base,(S.stacksize+1)*sizeof(int));

if ( ② ) { printf (“Not Enough Memory!\\n”); retuan 0; }

S.top= ③ ; S.stacksize= ④ ; }

⑤ ; retuan 1; } 22

9 链栈

选择题

(1) 向一个栈顶指针为h的带头结点的链栈中插入指针s所指的结点时,应执行

( )。 A.h->next=s; B.s->next=h; C.s->next=h; h->next=s; D.s->next=h->next; h->next=s;

(2) 从栈顶指针为top的链栈中删除一个结点,用x保存被删除结点的值,则执行

( )。

A.x=top; top=top->next; B.x=top->data; C.top=top->next; x=top->data; D.x=top->data; top=top->next;

23

10 队列的基本概念

选择题

>>灞曞紑鍏ㄦ枃<<
12@gma联系客服:779662525#qq.com(#替换为@) 苏ICP备20003344号-4 ceshi