数据结构试题集(包含答案-完整版)

内容发布更新时间 : 2024/11/15 16:22:06星期一 下面是文章的全部内容请认真阅读。

.

va[j+1]=va[j]; va[i]=x; } n++; }

7、假设线性表采用顺序存储结构,表中元素值为整型。阅读算法f2,设顺序表L=(3,7,3,2,1,1,8,7,3),写出执行算法f2后的线性表L的数据元素,并描述该算法的功能。

void f2(SeqList *L){

int i,j,k; k=0;

for(i=0;ilength;i++){

for(j=0;jdata[i]!=L->data[j];j++);

if(j==k){

if(k!=i)L->data[k]=L->data[i];

}

L->length=k; }

答案:

(3,7,2,1,8) 删除顺序表中重复的元素

8、已知线性表中的元素以值递增有序排列,并以单链表作存储结构。试写一算法,

}

k++;

可编辑范本

.

删除表中所有大于x且小于y的元素(若表中存在这样的元素)同时释放被删除结点空间。 答案:

void Delete_list(Lnode *head, ElemType x, ElemType y) {Lnode *p, *q;

if(!head) return ERROR;

p=head; q=p; while(!p)

{if(p->data>x) && (p->data

if(p==head)

{head=p->next; free(p); p=head; q=p; } else

{q->next=p->next; free(p); p=q->next; }

else

{q=p; p=p->next; }

}

}

9、在带头结点的循环链表L中,结点的数据元素为整型,且按值递增有序存放。给定两个整数a和b,且a

可编辑范本

.

点。

第三章 栈和队列

一、选择题

1、一个栈的输入序列为:a,b,c,d,e,则栈的不可能输出的序列是( )。

A. a,b,c,d,e B. d,e,c,b,a C. d,c,e,a,b D. e,d,c,b,a

2、判断一个循环队列Q(最多n个元素)为满的条件是( )。

A. Q->rear==Q->front

B. Q->rear==Q->front+1

C. Q->front==(Q->rear+1)%n D. Q->front==(Q->rear-1)%n

3、设计一个判别表达式中括号是否配对的算法,采用( )数据结构最佳。

A. 顺序表

B. 链表

C. 队列

D. 栈

4、带头结点的单链表head为空的判定条件是( )。

A. head==NULL

B. head->next==NULL

C. head->next!=NULL D. head!=NULL

5、一个栈的输入序列为:1,2,3,4,则栈的不可能输出的序列是( )。

A. 1243 B. 2134

C. 1432 D. 4312

E. 3214

6、若用一个大小为6的数组来实现循环队列,且当rear和front的值分别为0,3。当从队列中删除一个元素,再加入两个元素后,rear和front的值分别为( )。

A. 1和5

B. 2和4

C. 4和2

D. 5和1

7、队列的插入操作是在( )。

可编辑范本

.

A. 队尾 B. 队头 C. 队列任意位置 D. 队头元素后

8、循环队列的队头和队尾指针分别为front和rear,则判断循环队列为空的条件是( )。

A. front==rear C. rear==0

B. front==0

D. front=rear+1

9、一个顺序栈S,其栈顶指针为top,则将元素e入栈的操作是( )。

A. *S->top=e;S->top++; C. *S->top=e

B. S->top++;*S->top=e; D. S->top=e;

10、表达式a*(b+c)-d的后缀表达式是( )。

A. abcd+-

B. abc+*d-

C. abc*+d-

D. -+*abcd

11、将递归算法转换成对应的非递归算法时,通常需要使用( )来保存中间结果。

A. 队列

B. 栈

C. 链表

D. 树

12、栈的插入和删除操作在( )。 A. 栈底

B. 栈顶

C. 任意位置

D. 指定位置

13、五节车厢以编号1,2,3,4,5顺序进入铁路调度站(栈),可以得到( )的编组。

A. 3,4,5,1,2 C. 3,5,4,2,1

B. 2,4,1,3,5 D. 1,3,5,2,4

14、判定一个顺序栈S(栈空间大小为n)为空的条件是( )。

A. S->top==0 C. S->top==n

B. S->top!=0 D. S->top!=n

15、在一个链队列中,front和rear分别为头指针和尾指针,则插入一个结点s的操作为

可编辑范本

.

( )。

A. front=front->next

B. s->next=rear;rear=s

C. rear->next=s;rear=s; D. s->next=front;front=s;

16、一个队列的入队序列是1,2,3,4,则队列的出队序列是( )。

A. 1,2,3,4 C. 1,4,3,2

B. 4,3,2,1 D. 3,4,1,2

17、依次在初始为空的队列中插入元素a,b,c,d以后,紧接着做了两次删除操作,此时的队头元素是( )。

A. a

B. b

C. c

D. d

18、正常情况下,删除非空的顺序存储结构的堆栈的栈顶元素,栈顶指针top的变化是( )。

A. top不变

B. top=0

C. top=top+1

D. top=top-1

19、判断一个循环队列Q(空间大小为M)为空的条件是( A )。

A. Q->front==Q->rear C. Q->front+1=Q->rear

B. Q->rear-Q->front-1==M D. Q->rear+1=Q->front

20、设计一个判别表达式中左右括号是否配对出现的算法,采用( C )数据结构最佳。

A. 线性表的顺序存储结构 储结构

21、当用大小为N的数组存储顺序循环队列时,该队列的最大长度为(C )。

A. N

B. N+1

C. N-1

D. N-2

B. 队列

C. 栈

D. 线性表的链式存

22、队列的删除操作是在( A )。

可编辑范本

联系客服:779662525#qq.com(#替换为@) 苏ICP备20003344号-4 ceshi