陕师大《数据结构》 1 2 3章测试题

2020-02-21 11:20

DS一、二、三章测试

一、选择题(每题2分,共20分)

1、 若某线性表中最常用的操作是取第i个数据元素,则应采用( )存储方式最节

约时间。

A 单链表 B 双链表 C 单循环链表 D 顺序表

2、 在一个长度为n的顺序表的表尾插入一个元素,其渐进时间复杂度为( )。

A O(n) B O(1) C O(n2 ) D O(log2n)

3、 假设以数组A[n]存放循环队列的元素,其头、尾指针分别为front和rear。若设定尾指针指向队列中的队尾元素,头指针指向队列中队头元素的前一个位置,则当前存于队列中的元素个数为( ) A.(rear-front-1)%n C.(front-rear+1)%n

B.(rear-front)%n D.(rear-front+n)%n

4、 已知一个栈的入栈序列是1,2,3,…, n,其输出序列是p1,p2,…,pn。若p1=n,则pi(1≤i≤n)为( )。

A. i B. n-i C. n-i+1 D. 不确定

5、下列程序段的时间复杂度为( ) s=0;

for(i=1;i

for(j=1;j

s+=i*j;

B.O(n) C.O(2n)

D.O(n2)

A.O(1)

6、假设某个带头结点的单链表的头指针为head,则判定该表为空表的条件是( )

A.head==NULL; B.head->next==NULL;

C.head!=NULL; D.head->next==head; 7、线性表是具有n个( )的有限序列。 A. 表元素 B. 字符 C. 数据元素 D. 数据项

8. 判定一个大小为m的栈S为满的条件是( )。

A. S.top- S.Base=0 B. S.top==0 C. S.top=m D. S.top-S.Base>=m 9、判定一个循环队列Q (最多元素为MAXSIZE)为满的条件是 。 A. Q.front= = Q.rear B. Q.front!=Q.rear

C. Q.front= =(Q.rear+1)%MAXSIZE D. Q.front!=(Q.rear+1)%MAXSIZE

10、带头结点的单链表(头指针为h)为空的判定条件是( )。 A. A. h=NULL B. h->next=NULL C. h->next=h D. H!=NULL

二、填空题(每题4分,共40分)

1、表长为n的顺序存储的线性表,假设搜索表中任何一个数据元素的概率相等,则搜索任何一个元素所需进行的平均比较次数为 。

2、 已知指针p所指结点不是尾结点,若在*p之后插入结点*s,则应执行的操作是: 。

3、 假设为循环队列分配的向量空间为Q[20],若队列的长度和队头指针值分别为13和17,则当前尾指针的值为 。

4、若进栈序列为a,b,c,且进栈和出栈可以穿插进行,则可能出现 个不同的出栈序列。

5、已知指针p所指结点不是尾结点,若在*p之后插入结点*s,则应执行的操作是: 。

6、表长为n的顺序存储的线性表,假设搜索表中任何一个数据元素的概率相等,则搜索任何一个元素所需进行的平均比较次数为 。

7、 在一个单链表中删除p所指结点时,可以将p的后继结点的数据域放入p所指结点的数据域,然后将p的后继结点删除,那么,应执行以下操作:

q=p->next;

p->data= ; p->next= ;

8、将图1中s所指结点加到p所指结点之后,其语句应是 。

s e p

Ai-1 图1

Ai

9、若有程序段 i=0;s=0; while(s

三、程序设计(每题20分,共40分)

1、写一个算法,将一个不带头结点的单链表(由L指向)逆置。 提示:为方便起见,采用逆序创建新链表的方法放置逆置的结点,且新链表带头结点(由S指向)。

说明:该单链表的存储类型定义为 typedef int ElemType; typedef struct

{ ElemType data; LNode *next; } LNode, *LinkList; 函数模块的框架为:

void invertLinkList(LinkList L) {

请在此写入自己的算法 解答:

2、假设以带头结点的单链表表示线性表,单链表的类型定义如下: typedef int DataType; typedef struct node { DataType data; struct node * next; } LinkNode, * LinkList;

编写算法,删除线性表中最大元素(假设最大值唯一存在)。

DS 1、2、3章测试答案

一、

DBDCD BCDCB 二、 1、(n+1)/2

2、s->next=p->next; p->next=s 3、10 4、5

5、s->next=p->next; p->next=s; 6、(n+1)/2

7、p->next->data 或 q->data; q->next 或 p->next->next 8、s->next=p-next; p->next=s 9、O(n)

10、O(log2n) 三、 1、

S=(LNode *)malloc(sizeof(LNode)); S->next=NULL; p=L; while(p) { Q=s->next; s->next=p; p=p->next; s->next->next=q;

} } 2、

void del_max_link (LinkList & head) {

pre=head; //pre是 p 的前驱 p=head->netx;

max_value=p->data; q=p;

while (q->next ) { if (q->next->data >max_value )

{

pre=q; p=q->next;

max_value=p->data;

}

q=q->next;

}// end of while; pre->next=p->next; delete p; }


陕师大《数据结构》 1 2 3章测试题.doc 将本文的Word文档下载到电脑 下载失败或者文档不完整,请联系客服人员解决!

下一篇:Fluent模拟太阳辐射的问题

相关阅读
本类排行
× 注册会员免费下载(下载后可以自由复制和排版)

马上注册会员

注:下载文档有可能“只有目录或者内容不全”等情况,请下载之前注意辨别,如果您已付费且无法下载或内容有问题,请联系我们协助你处理。
微信: QQ: