数据结构计算机科学与技术Word文档下载推荐.docx
- 文档编号:16016145
- 上传时间:2022-11-17
- 格式:DOCX
- 页数:10
- 大小:19.50KB
数据结构计算机科学与技术Word文档下载推荐.docx
《数据结构计算机科学与技术Word文档下载推荐.docx》由会员分享,可在线阅读,更多相关《数据结构计算机科学与技术Word文档下载推荐.docx(10页珍藏版)》请在冰豆网上搜索。
A.关键字B.元素值C.散列地址D.含义
8、有序表(1,32,41,45,62,75,77,82,95,100),使用折半查找关键字为95的元素时,需要经过次比较后才能查找成功。
A.2B.3C.4D.5
9、下列方法中,是稳定的排序方法。
A•堆排序B.希尔排序C.快速排序D.直接插入排序
10、对n个记录的序列进行堆排序,最坏情况下的时间复杂度为。
A.O(logn)B.O(nlogn)C.O(n)D.O(n2)
二、是非题:
(每题1分,共10分)(说明:
正确的选“A”,错误选B了
11、在数据结构中,从逻辑上可以把数据结构分为动态结构和静态结构两大类。
(B)
12、在不带头结点的非空单链表中,首元结点的存储位置由头指针指示。
(B)
13、队列是限定在队尾插入元素,在队头删除元素的线性表。
(A)
14、空串和空格串是相同的。
(A)
15、在哈夫曼树中,通常权值较大的结点离根较远。
16、若从无向图的一个顶点出发进行广度优先遍历可访问到图中所有顶点,则该图一定是连通图。
17、有n个顶点和n-1条边的无向图一定是生成树。
(B)
18、折半查找时,要求线性表必须是有序的且以顺序结构存储。
(A)
19、快速排序的速度在所有排序方法中是最快的,而且所需的附加空间也最少。
(B)
20、对一个堆按层次遍历,不一定能得到一个有序序列。
第二部分主观题一、简答题(每题10分,共50分)
1、在快速排序过程中,通常取序列中的第1个记录作为枢轴,以它为“分界线”重排其余记录。
但当初始记录序列按关键字有序或基本有序时,快速排序将蜕化为起泡排序,为改进之,应如何选取枢轴记录?
答有序或者基本有序时,每次划分只能完成1个(左右),时间复杂度为0(nT)
如果要改进,选择枢轴可以使用方法:
方法1、三者取中:
序列第一个、中间位置、最后位置三个值的中间值
方法2、随机选取:
不再是第一个记录,而是在序列中随机选取
2、证明:
任何一棵满二叉树中的分支数B满足B=2(nO-1),其中n0为叶子结点个数。
证明:
设nO为叶子结点个数,证明:
设,n2为叶子结点个数,则由二叉树的性质2可知:
n2=nO-1又:
满二叉树中只有度为2的结点和叶子结点,所以满二叉树中的结点总数n=n2+n0=2nO-1又:
二叉树中的分支数B=n-1所以:
B=2n0-1-1=2(nO-1)
01O
1O1
3、一个图的邻接矩阵G.arcs=「°
11-,则该图有多少个顶点?
如果是有向
图,该图共有多少条弧?
如果是无向图,该图共有多少条边?
图有3个顶点,如果是有向图,则有4条弧,如果是无向图,则有2条边
4、设散列函数H(key)=keyMOD7,用线性探测再散列法解决冲突。
对关键字序列{13,28,72,5,16,8,7,11}在地址空间为0-10的散列区中建散列表,画出此表,并求等概率情况下查找成功时的平均查找长度。
下标CI2345d
7$
jF
|关密字|二3|72|Ifp5B
11
匕般7懸1112511
4
ASL=(1+1+1+2+5+1+1+4)/8=2
5、设关键字集合为{10,2,14,8,12,13},
(1)写出用希尔排序方法对序列排序时每一趟结束时的关键字状态。
⑵用堆排序方法对其从小到大排序,画出堆排序的初态、建堆和排序过程中重建堆的过程。
(1)希尔排序:
d1=3:
{8213101214}
d2=2:
{8212101314}
d3=1:
{2810121314}
⑵
堆排序初态:
{10,2,14,8,12,13}
建堆:
{1412138210}
输出14之后再建堆:
{1312108214}
输出13之后再建堆:
{1281021314}
输出12之后再建堆:
{1082121314}
输出10之后再建堆:
{8210121314}
输出8之后再建堆:
{2810121314}有序
二、算法题(每题10分,共20分)
1、设带头结点的单链表(L为头指针)中的数据元素递增有序。
设计算法,将x
插入到链表的适当位置上,并仍保持该表的有序性。
voidInsert(ListNode*head,intx)
{〃设为有头结点,成员和类型名请按自己的实际情况修改
ListNode*p,*q;
p=head->
next;
q=head;
while(p!
=NULL&
&
p->
data<
x)
{
q=p;
p=p_>
}
p=(ListNode*)malloc(sizeof(ListNode));
p->
data=x;
p_>
next=q_>
q_>
next=p;
2、假设将循环队列定义为:
以整型域变量front和length分别指示循环队列中
队头元素位置和队列中元素个数,指针elem指示存放队列元素的连续空间的首
地址,写出相应的入队列和出队列的算法
1.typedefcharQElemType;
2.typedefstruct{
3.QElemTypeelem[MAXQSIZE];
4.intlength;
5.intrear;
6.}CLenQueue;
7.StatusEnCQueue(CLenQueue&
Q,QElemTypex)
8.{
9.if(Q.length==MAXQSIZE){
10.returnERROR;
//循环队列满
11.}
12.if(MAXQSIZE-1!
=Q.rear){
13.++Q.rear;
14.Q.elem[Q.rear]=x;
15.}
16.else{//rear指向循环队列的末尾时,作特殊处理使其构成循环
17.Q.rear=0;
18.Q.elem[Q.rear]=x;
19.}
20.++Q.length;
〃当前元素个数+1
21.returnOK;
22.}
23.
23.StatusDeCQueue(CLenQueue&
Q,QElemType&
x)
24.{
25.if(!
Q.length){
26.returnERROR;
//循环队列空
27.}
28.if(Q.rear+1>
=Q.length){〃当rear的下标大于对头指向的下标时
29.x=Q.elem[Q.rear+1-Q.length];
30.}
31.else{〃当rear的下标小于队头下标时
32.x=Q.elem[MAXQSIZE+Q.rear+1-Q.length];
34.
35.
36.
37.
38.
39.
40.
41.
42.
43.
44.
45.
46.
47.
48.
49.
50.
51.
52.
53.
54.
55.
56.
57.
--Q.length;
//当前元素个数-1
returnOK;
#include<
stdio.h>
stdlib.h>
#defineQUEUE_SIZE10
/*循环队列结构体*/
typedefstruct{
intfront;
/*队列头*/
intrear;
/*队列尾*/
intlength;
/*记录队列元素个数*/
intdata[QUEUE_SIZE];
/*存放队列元素值的数组*/
}CirQueue;
/*初始化队列*/
voidinitQueue(CirQueue*Q)
Q->
front=Q->
rear=0;
length=0;
/*判断队列是否为空*/
intQueueEmpty(CirQueue*Q)
returnQ->
length==0;
58.
59.
60.
61.
62.
63.
64.
65.
66.
67.
68.
69.
70.
71.
72.
73.
74.
75.
76.
77.
78.
79.
/*判断队列满*/
intQueueFull(CirQueue*Q)
length==QUEUE_SIZE;
/*入队列*/
voidEnQueue(CirQueue*Q,intdata)
if(QueueFull(Q))
printf("
队列已经满了.\n"
);
length++;
/*队列元素个数加1*/
data[Q->
rear]=data;
/*将新元素插入队尾*/
rear=(Q->
rear+1)%QUEUE_SIZE;
/*将队尾加1*/
/*岀队列*/
intDequeue(CirQueue*Q)
inttemp;
if(QueueEmpty(Q))
队列已经为空!
\n"
temp=Q->
front];
80.
81.
82.
83.
84.
85.
86.
87.
88.
89.
90.
91.
92.
93.
94.
95.
96.
97.
98.
99.
100.
101.
length--;
/*队列元素个数减1*/
front=(Q->
front+1)%QUEUE_SIZE;
/*队列头加1*/
returntemp;
/*测试程
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 数据结构 计算机科学 技术