数据结构与算法 模拟试卷七、八及参考答案

2026/1/27 13:44:11

模拟试卷七

一、单项选择题(在每小题的四个备选答案中,选出一个正确的答案,并将其号码填在题干后的括号内。每小题1分,共10分)

1.假设执行语句S的时间为O(1),则执行下列程序段 for(i=1;i<=n;i++) for(j=i;j<=n;j++) S;

的时间为( )

A)O(n) C)O(n*i)

B)O(n) D)O(n+i)

2

2.设栈最大长度为3,入栈序列为1,2,3,4,5,6,则不可能的出栈序列是( )。

A)1,2,3,4,5,6 B)2,1,3,4,5,6 C)3,4,2,1,5,6 D)4,3,2,1,5,6

3.设单链表的结点结构为(data,next),已知指针q所指结点是指针p所指结点的直接前驱,如在*q与*p之间插入结点*s,则应执行的操作为( )。

A)s->next=p->next; p->next=s; B)q->next=s; s->next=p; C)p->next=s-next; s->next=p; D)p->next=s; s-next=q;

4.串S='ABC DEF'的串长为( )。

A)3 B)4

C)7 D)8

5.下面二叉树按( )遍历得到的序列是FEDBIHGCA。

A)先序

B)中序

C)后序 D)层次

6.用Floyd算法求每一对顶点之间的最短路径的时间复杂度为( )。

A)O(n)

C)O(n3)

2

B)O(n2) D)O(nlogn) B)n D)n

2

7.具有n个顶点的无向图,它可能具有的边数的最大值为( )。

A)(n+n)/2

C)(n2-n)/2

8.二分查找法要求被查找的表是( )。

A)顺序表 B)链接表

C)顺序表且是按值递增或递减次序排列 D)不受上述的任何限制 9.在一待散列存储的线性表(18,25,63,50,42,32,90),若选用h(k)=k % 7作为散列函数,则与元素18冲突的元素有( )个。

1

A)0 B)1

C)2 D)3

10.在下列排序算法中,不稳定的是( )。

A)直接插入排序 B)折半插入排序 C)归并排序 D)直接选择排序

二、填空题(每空1分,共15分)

1.当一个传值型形式参数所占空间较大时,最好说明为( ),以节省参数值传输时间和存储参数的空间。

622

2.一个算法的时间复杂度为(5n-3nlog2n+7n-9)/(3n+1),其数量级表示为( )。

3.有一矩阵为a[-3:1,2:6],每个元素占一个存储单元,存储的首地址为100,以行序为主,则元素a(-1,4)的地址为( )。

4.一维数组的逻辑结构是( )。

5.在有n个结点的单链表la中,删除指定结点p的操作delete(la,p)的时间复杂度为( )。

6.栈的插入与删除操作在( )进行,出栈操作时,需要修改 ( )。 7.表达式3*(x+2) - 5的后缀表达式为( )。

8.对于一个具有9个结点的二叉树的最小深度为( ),最大深度为( )。

9.在一个具有n个顶点的无向图中,要连通所有顶点则至少需要( )条边。 10.表示图的最常用两种存储结构是( )与( )。 11.每次从无序表中取一个元素,把它插入到有序表中的适当位置,此种排序方法称为( )排序。

12.已知一有序表(13,20,25,37,48,58,61,78,83,90,128),当二分查找值48的元素时,经过( )次比较后查找成功。

三、判断改错题(判断正误,将正确的划上“√”,错误的划上“×”,每小题1分,共10分)

1.数据的逻辑结构是指数据元素之间的逻辑关系。 ( ) 2.数组不是一种随机存取结构。 ( ) 3.顺序表在物理存储空间中一定是连续的。 ( )

4.设一个栈的入栈序列是ABCD,则借助于一个栈能得出栈序列ACDB。 )

5.串的长度是指串中不同字符的个数。 6.矩阵压缩存储的方法都是用三元组表存储矩阵元素。

7.结点数为n的完全二叉树的深度为log2n+1。

( ) ( (

8.在一个有向图的邻接表中,如果某个顶点的链表为空,则此顶点的度一定为零。

9.在顺序表中取出第i个元素所花费时间与i成正比。

( ) (

10.在快速排序算法中,取待排序的n个记录中的某个记录(如第一个记录)的键值为

基准,将所有记录分为两组,此记录就排在这两组的中间,这也是此记录的最终位置。

( )

2

四、简答题(每小题4分,共20分) 1.在双向循环链表中p所指结点之后插入s所指结点,设结点结构为(priou,data,next),试给出语句序列。

2.对于下图,用Kruskal算法构造出一棵最小生成树,要求图示出每一步的变化情况。

3.已知一棵二叉树的后序序列与中序序列分别为DBECA与BDAEC,试画出此二叉树。 4.对于权值序列w={1,10,8,5,3,1,3},试画出它对应的哈夫曼树。 5.已知关键字序列{12,26,38,89,56},试构造平衡二叉树。 五、算法题(共25分)

1.程序填空题(每空2分,共8分)

下面程序的功能是二叉树的层次遍历的非递归算法,其中二叉树的结点结构为(lchild,data,rchild),队列的常用方法有:入队EnQueue,出队DlQueue,判空QueueEmpty;试将程序补充完整。

template

void BiTree::levelorder(BiTreeNode *T, void (*Visit)(Type & e)){ Queue< BiTreeNode *>& Q; BiTreeNode *p

EnQueue(Q,T); ; while(! ){ ; if(p->lchild){

EnQueue(Q,p->lchild);visit(p->lchild->data) } if( ){ EnQueue(Q,p->rchild);visit(p->rchild->data) }

}// while

}//levelorder

2.程序填空题(每空2分,共8分)

下面程序的功能是用链地址法处理冲突,哈希函数为H(key)=key % m,进行哈希表的插入算法。(如表中已存在关键字相同的记录,则不进行插入),试将程序补充完整。

typedef enum{SUCCESS,UNSUCCESS}Status;

template typedef struct Node{ Type elem; struct Node *next; }Node,*LinkList; template

3

typedef struct {

LinkList *head; int m; }HashTable;

template

Status SerchHashTable(HashTable H,Type e){ int k=e.key % m;

Node *pre=NULL,*p=H[k].head; while(p&&p->elem.key!=e.key){ pre=p;p= ; }//while if(!p){

Node *q=new Node; q->elem= ; pre->next= ;

q->next=NULL; //将q追加在相应链表的末尾 return SUCCESS; }

else return ; } //SerchHashTable

3.(9分)阅读下面的算法,试回答:

(1)此算法的功能是什么? (2)变量c的结果表明什么?

(3)对于如下的有向图,执行此算法后c的值是多少?

template

int MGraph::cid(MGraph g){ //g是有向图的邻接数组存储结构 int i,j,c=0;

for(j=0;j

while(g.arcs[i,j]= =0&&i= g.vexnum)c++ }//for return c; }//cid

六、写算法(共20分)

1.(12分)以单链表为存储结构实现直接插入排序,排序的结果是单链表按关键字值升序排序,试编写此算法。算法申明如下:

4


数据结构与算法 模拟试卷七、八及参考答案.doc 将本文的Word文档下载到电脑
搜索更多关于: 数据结构与算法 模拟试卷七、八及参考答案 的文档
相关推荐
相关阅读
× 游客快捷下载通道(下载后可以自由复制和排版)

下载本文档需要支付 10

支付方式:

开通VIP包月会员 特价:29元/月

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