数据结构模拟试题.docx

上传人:b****7 文档编号:9303331 上传时间:2023-02-04 格式:DOCX 页数:19 大小:257.27KB
下载 相关 举报
数据结构模拟试题.docx_第1页
第1页 / 共19页
数据结构模拟试题.docx_第2页
第2页 / 共19页
数据结构模拟试题.docx_第3页
第3页 / 共19页
数据结构模拟试题.docx_第4页
第4页 / 共19页
数据结构模拟试题.docx_第5页
第5页 / 共19页
点击查看更多>>
下载资源
资源描述

数据结构模拟试题.docx

《数据结构模拟试题.docx》由会员分享,可在线阅读,更多相关《数据结构模拟试题.docx(19页珍藏版)》请在冰豆网上搜索。

数据结构模拟试题.docx

数据结构模拟试题

模拟试题1

、选择题(共10题,每题1分,共10分)

1.下面关于线性表的叙述中,错误的是哪一个?

()

A.线性表采用顺序存储,必须占用一片连续的存储单元

B.线性表采用顺序存储,便于进行插入和删除操作

C.线性表采用链接存储,不必占用一片连续的存储单元

D.线性表采用链接存储,便于插入和删除操作

2.

s所指结

在一个单链表中,已知q所指结点是p所指结点的前驱,若在p和q之间插入点,则执行的操作是()。

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;

3.设有三个元素XY,Z顺序进栈,下列得不到的出栈排列是()。

A.XYZB.YZXC.ZXYD.ZYX

4.若用一个长度为6的数组来实现循环队列,且当前rear和front的值分别为则从队列中删除一个元素,再增加两个元素后,rear和front的值分别是(

A.1和5B.2和4C.4和2D.5和1

5.下列说法中正确的是()。

6.

.二叉树中不存在度大于2的结点

二叉树就是度为2的树B

 

9.对17个元素的查找表做折半查找,则查找长度为5的元素下标依次是(

A.8,17B.5,10,12C.9,16D.9,17

10.关于排序,下列说法中正确的是()。

A.稳定的排序方法优于不稳定的排序方法,因为稳定的排序方法效率较高

B.在顺序表上实现的排序方法在链表上也可以实现

C.在链表上可以实现简单选择排序,但是难以实现堆排序

D.就平均性能而言,堆排序最佳

、填空题(共10空,每空2分,共20分)

1.计算机执行下面的语句时,语句s的执行次数为。

for(i=l;i

for(j=n;j>=i;j--)s;

2.队列是限制插入只能在表的一端,而删除在表的另一端进行的线性表,其特点是

3.数组A[0..5,0..6]的每个元素占五个字节,将其按列优先次序存储在起始地址为

的内存单元中,则元素A[5,5]的地址是。

4.一棵有124个叶子结点的完全二叉树,最多有个结点。

5.N个顶点的无向连通图若要存在回路,则至少需要条边。

6.对于一棵二叉排序树做遍历,可以得到一个有序的序列。

7.进行折半查找的两个先决条件是查找表中数据有序和。

&按{12,24,36,90,52,30}的顺序构成的平衡二叉树,其根结点是。

9.时间复杂度为O(nlg2n)且稳定的排序算法是排序。

10.快速排序在情况下会蜕变成为冒泡排序。

三、应用题(共5题,每题10分,共50分)

1.设一棵二叉树的先序遍历序列:

ABDFCEGH中序遍历序列:

BFDAGEHC

(1)画出这棵二叉树。

(2)将这棵二叉树转换成对应的树(或森林)。

2.给定一组数列(15,8,10,21,6,19,3)分别代表字符A,B,C,D,E,F,G出现的频度,画出

Huffman树,并给出各字符的Huffman编码。

3.根据Prim算法或Kruskal算法,求右图的最小生成树。

4•某一工程作业的网络图如右图所示,其中箭头表示作业,箭头边的数字表示完成作业所需的天数。

箭头前后的圆圈表示事件的编号。

求出所有事件开始的最早时间和最晚时间,

并给出关键路径。

5.设哈希函数H(k)=3*Kmod11,散列地址空间为0〜10,对关键字序列(32,13,49,24,38,21,4,12)按线性探测再散列的方法解决冲突,构造哈希表,并求出

等概率下查找成功时的平均查找长度

四、程序设计题(共2题,共20分)

1.设有两条带头结点单链表La和Lb,且表中的数据有序递增。

现要将两条单链表合并成为一条单链表Lc,并使Lc中的数据有序递减.。

试写算法来实现,并说明算法的时间复杂度。

2.写算法判断两棵二叉树是否相似。

相似的条件是:

要么它们都为空或者都只有一个根结点,要么它们的左右子树均相似。

试题参考答案

选择题1-5BACBB6-10CDCAC

填空题

1

(n+3)(n-2)/2

2FIFO

3

1175

4248

5

N-1

6

中序遍历

7

顺序存储

836

9

归并排序

10

数据基本有序

操作题

1、

3、

 

4、略

5、

散列地址

0

1

2

3

4

5

6

7

8

9

10

关键字

4

12

49

38

13

24

32

21

比较次数

1

1

1

2

1

2

1

2

ASLsucc=(1+1+1+2+1+2+1+2)/8=11/8

算法设计

1voidMerge(LinkedListla,Linklistlb)

{pa=La->next;pb=Lb->next;

Lc=La;

while(pa&&pb){if(pa_>data<=pb_>data)

{Lc->next=pa;Lc=pa;pa=pa->next;}else{Lc->next=pb;Lc=pb;pb=pb->next}

}

Lc->next=pa?

pa:

pb;free(Lb);

}

2statussam(BiTreeTa,BiTreeTb)//判断相似{if(!

Ta&&!

Tb)returnOK;

else{if(Ta&&!

Tb||!

Ta&&Tb)returnFalse;else{p=same(Ta->lchild,Tb->lchild);if(p)p=same(Ta->rchild,Tb->rchild);

returnp;

}

}//结束

模拟试题2

一、选择题(共10题,每题1分,共10分)

1.下面关于线性表的叙述中,错误的是哪一个?

()

A.线性表采用顺序存储,必须占用一片连续的存储单元。

B.线性表采用顺序存储,便于进行插入和删除操作。

C.线性表采用链接存储,不必占用一片连续的存储单元。

D.线性表采用链接存储,便于插入和删除操作。

2.在双向链表指针p的结点前插入一个指针q的结点操作是()。

A.p->prior=q;q_>next=p;p->prior->next=q;q->prior=q;

B.p->prior=q;p->prior->next=q;q->next=p;q->prior=p->prior;

C.q->next=p;q->prior=p->prior;p->prior->next=q;p->prior=q;

D.q->prior=p->prior;q->next=q;p->prior=q;p->prior=q;

3.设有三个元素X,Y,Z顺序进栈(进的过程中允许出栈),下列得不到的出栈排列是

()。

A.XYZB.YZXC.ZXYD.ZYX

4.递归过程或函数调用时,处理参数及返回地址,要用一种称为()的数据结构。

A.队列B.多维数组C.栈D.线性表

5.循环队列存储在数组A中,数组长度为m,则入队时的操作为()。

A.rear=rear+1B.rear=(rear+1)%(m-1)

C.rear=(rear+1)%mD.rear=(rear+1)%m

6.数组A[0..5,0..6]的每个元素占五个字节,将其按列优先次序存储在起始地址为1000

的内存单元中,则元素A[5,5]的地址是()。

&一棵非空的二叉树的先序遍历序列与中序遍历序列正好相同,则该二叉树一定满足

1.计算机执行下面的语句时,则其复杂时间度为0()。

for(i=l;i

for(j=n;j>=1;j--)s;

2.栈的数据进出特点是。

3.在顺序表中做插入和删除操作,移动元素的个数大约等于表程长度的。

4.深度为5的完全二叉树,其结点至少有_______个,至多有_______个。

5.对一棵完全二叉树按照层次编号,编号为i(i>1)的结点的双亲结点的编号是

6.对于一棵二叉排序树做遍历,可以得到一个有序的序列。

7.己知有序表为(12,18,24,35,47,50,62,83,90,115,134)当用二分法查找时,第二次查

找即查找成功的数据是或。

&归并排序算法的时间复杂度为。

三、操作题(共5题,每题10分,共50分)

1.设一棵二叉树的先序、中序遍历序列分别为,先序遍历序列:

ABDFCEGH中序

遍历序列:

BFDAGEHC,画出这棵二叉树。

2.给定集合{1,2,3,4,5,6},试构造一棵哈夫曼树。

3.根据普利姆算法或克鲁斯卡尔算法,求它的最小生成树。

4.

5.设一数组中原有数据如下:

15,13,20,18,12,60。

试写出每一趟快速排序的结果。

四、程序设计题(共2题,共20分)

1.设有一个无序单链表,删除单链表中第i个元素,写算法实现。

2.写出希尔排序的算法。

1(n+3)(n-2)/2

32_丄

52^6

738

试题参考答案

选择题1-5BCCCD6-10ABADB

填空题

2FIFO

42二2k-1

中序遍历归并

 

操作题

1、

3、

A

2

A

D

F

3

A

D

3

2

A

D

3

G

B

3

G

2

D

4

C

A

D

C

B

3

3

G

1

2、wpl=51

散列地址

0

1

2

3

4

5

7

8

g

10

11

12

13

14

15

16

关键宇

Apr

Aug

Bee

Feb

Jan

Mar

May

Jun

丁讥

Sep

Oct

Nov

比较次数

1

2

1

1

1

i

2

4

5

2

5

6

 

b=

13

A

AI

A

A

A

A

A

0123456789

Apr

Aug

A

Jun

May

A

Nev

A

Jul]人

 

4、a:

ASLsucc=31/12

5①快速排序

算法设计

(2)b:

ASGcc=18/12

1voidMiniValue(LinkedListla)

//la是数据域为正整数且无序的单链表,本算法查找最小值结点且打印。

若最小值结点的数值是奇数,则与后继结点值交换;否则,就删除其直接后继结点。

{p=la->next;//设la是头结点的头指针,p为工作指针。

pre=p;//pre指向最小值结点,初始假定首元结点值最小。

while(p->next!

=null)//p->next是待比较的当前结点。

{if(p_>next->datadata)pre=p->next;

p=p->next;//后移指针

}

printf("最小值=%d\n”,pre->data);

if(pre->data%2!

=0)//处理奇数

if(pre->next!

=null)//若该结点没有后继,则不必交换

{t=pre->data;pre->data=pre->next->data;pre->next->data=t;}〃交换完

else//处理偶数情况if(pre->next!

=null)//若最小值结点是最后一个结点,则无后继

{u=pre->next;pre->next=u->next;free(u);}〃释放后继结点空间

2voidCount(BiTreebt,int*n0,*n)//统计二叉树bt上叶子结点数n0和非叶子结点数n

{if(bt)

{if(bt->lchild==null&&bt->rchild==nuII)*n0++;//叶子结点

else*n++;//非叶结点

Count(bt->lchild,&n0,&n);

Count(bt->rchild,&n0,&n);

}}//结束Count

模拟试题3

、选择题共10题,每题1分,共10分)

1.若栈采用顺序存储方式存储,现两栈共享空间V[1..m],top[i]代表第i个栈(i=1,2)

栈顶,栈1的底在v[1],栈2的底在V[m],则栈满的条件是()。

A.|top[1]-top[2]|=1B.top[1]+1=top[2]

C.top[1]+top[2]=mD.top[1]=top[2]

2.用链接方式存储的队列,在进行插入运算时().

A.仅修改头指针B.头、尾指针都要修改

C.仅修改尾指针D.头、尾指针可能都要修改

3.

以下数据结构中哪一个是非线性结构?

()

 

6.

)的数据结构。

递归过程或函数调用时,处理参数及返回地址,要用一种称为(

A.队列B.多维数组C.栈D.线性表

7.若有18个元素的有序表存放在一维数组A[19]中,第一个元素放A[1]中,现进行二分查

找,则查找A:

3]的比较序列的下标依次为()

B.

A.1,2,3

9,5,2,3

C.9,5,3D.9,4,2,3

8.

对n个记录的文件进行快速排序,所需要的辅助存储空间大致为

A.p->Llink=q;q->Rlink=p;p->Llink->Rlink=q;q->Llink=q

B.p->Llink=q;p->Llink->Rlink=q;q->Rlink=p;q->Llink=p->Llink;

C.q->Rlink=p;q->Llink=p->Llink;p->Llink->Rlink=q;p->Llink=q;

D.q->Llink=p->Llink;q->Rlink=q;p->Llink=q;p->Llink=q;序

二、填空题(共10空,每空2分,共20分)

1.若用链表存储一棵二叉树时,每个结点除数据域外,还有指向左孩子和右孩子的两个指

针。

在这种存储结构中,n个结点的二叉树共有个指针域,其中有个指针

域是存放了地址,有个指针是空指针。

2.循环队列的引入,目的是为了克服。

3.对于一个具有n个顶点和e条边的有向图和无向图,在其对应的邻接表中,所含边结点

分别有个和个。

4.已知完全二叉树的第4层有3个叶子结点,则整个二叉树最多有结点。

5.二叉树的后序遍历序列与中序遍历序列相同,则此二叉树。

6.n个顶点的连通无向图,其边的条数至少为__。

7对二叉排序树进行遍历,可以得到该二叉树所有结点构成的有序序列。

、应用题(共6题,共48分)

1有一份电文中共使用5个字符:

a,b,c,d,e,它们的出现频率依次为4,7,5,2,9。

试构造对应的Huffman树(按照左子树根结点的权小于等于右子树根结点的权的次序构造),

并求出每个字符的Huffman编码和树的带权路径长度。

2.已知一棵二叉树的前序遍历的结果是ABDFCEGH,中序遍历的结果是BFDAGEHC,试画出这棵二叉树。

3.已知一个无向图如下图所示,用Prim或者Kruskal算法生成最小树(假设以①为起点,试画出构造过程)。

20

10

4.判别以下序列是否是堆(大顶堆),如果不是,则把它调整为堆。

(12,70,33,65,

24,56,48,92,86,33)

5.设一个散列表下标从0到18,采用二次探测法解决冲突。

请将关键字{19,1,23,14,55,20,84,27,68,

11,10,77}采用哈希函数。

H(key)=key%13将各关键码映像到表中。

并给出在等概率情况下查找成功时的平均查找长度。

6.请阅读下列算法,回答问题

voidsort(r,n)

{FOR(i=2;i<=n;i++)

{x=r(i);r(O)=x;j=i-1;

WHILE(x.key

{r(j+1):

=r(j);j:

=j-1;}

r(j+1)=x}}

问题一:

这是什么类型的排序算法,该排序算法稳定吗?

问题二:

设置r(O)的作用是什么?

若将WHILE语句中判断条件改为x.key<=r(j).KEY,该算

法将会有什么变化,是否还能正确工作?

三、算法题(共2题,共12分)

1.设单链表的表头指针为h,结点结构由data和next两个域构成,其中data域为字符型。

写出算法dc(h,n),判断该链表的前n个字符是否中心对称。

例如xyx,xyyx都是中心对称。

2•以下程序是二分查找的递归算法。

,请填空使之完善。

IntBinsch(ElemTypeA[],intlow,inthigh,KeyTypeK)

{

if{intmid=(low+high)/2;

)returnmid;//

if(

elseif(K

returnBinsch(A,low,mid-1,K);//

elsereturn

}

else;//

}

;}

}

试题参考答案

选择题1-5DDDDC6-10CDCBC

填空题

1i/22i2i+1

2解决空间和入队操作间的矛盾

32ee

4

查找成功,返回元素的下标

在左子表上继续查找

;//在右子表上继续查找

查找失败,返回-1

255所有结点都没有左子树

6n-1

7中序

操作题

比较次数

3

1

2

1

2

3

1

1

3

1

1

1

ASLsucc=20/12

6、

(1)此为直接插入排序算法,该算法稳定。

⑵r[O]的作用是监视哨,免去每次检测文件是否到尾,提高了排序效率。

采用x.key<=r[j].key描述算法后,算法变为不稳定排序,但能正常工作。

四算法设计

1voidCount(BiTreebt,int*n)//统计二叉树bt上叶子结点数n0和非叶子结点数n

{if(bt)

{if(bt->lchild==null&&bt->rchild!

=null||bt->lchild!

=null&&

bt->rchild==null)*n++;

Count(bt->lchild,&n0,&n);

Count(bt->rchild,&n0,&n);

}}//结束Count

2low<=high

A[mid].key==k

Binsch(A,mid+1,high,k)

return-1

returnmid

展开阅读全文
相关资源
猜你喜欢
相关搜索

当前位置:首页 > 高等教育 > 文学

copyright@ 2008-2022 冰豆网网站版权所有

经营许可证编号:鄂ICP备2022015515号-1