数据结构习题 下载本文

27. AOV网的拓扑序列是唯一的。( 错 )

28. 带权连通图的最小生成树的权值之和是它的生成树的权值之和中最小的。( 对 ) 29. 带权连通图的最小生成树的权值之和一定小于它的其它生成树的权值之和。( 对 ) 30. 迪杰斯特拉(Dijkstra)算法是按照最短路径长度递增的顺序产生所有的最短路径。( 错 )

1. 折半查找对待查找的列表有两个要求:(1)采用【.顺序 】存储结构(2)关键字【有序 】排列。

2. 在线性表中采用折半查找法查找一个数据元素,线性表中元素应该按值有序,并且采用【.顺序 】存储结构。 3. 在表示一棵二叉排序树的二叉链表上,要找键值比某结点X的键值【小 】的结点,只需通过结点X的左指针到它的左子树中去找。

4. 中根遍历一棵二叉排序树所得的结点访问序列是键值的【升序 】序列。 5. 在一棵空的二叉排序树中依次插入关键字序列为12,7,17,11,16,2,13,9,21,4,所得到的二叉排序树是【 】。

6. 已知序列(34,76,45,18,26,54,92,65),按照逐点插入法建立一棵二叉排序列树,该树的深度是【5 】。

7. 平衡因子是【结点的左子树深度与右子数深度之差】。平衡的二叉排序树的平衡因子的值只能是【 -1 0 1 】。 8..哈希法中影响关键字比较次数的三个因素是:(1)【哈希函数、 】(2)【处理冲突的方法、 】(3)【哈希表的装填因子】。哈希表的装填因子是:α=【哈希表中元素个数 / 哈希表的长度 】。α的值越小,发生冲突的可能性越小,α的值越大,发生冲突的可能性越大。

8. 在数值无规律的线性表中进行检索的方法是【顺序查找 】 。 9. 按照排序过程涉及的存储设备的不同,排序可分为【内 】排序和【 外 】排序。

10.排序过程中一般进行两个基本操作(1)【 比较】(2)【移动 】。其中(1)是必要的,(2)可以采用适当的存储方式避免。

11.给定关键字(48,62,35,77,55,14,35,98)进行一趟快速排序的结果是【35 14 35 48 55 77 62 98】。

第 八、九章

12.若对序列(49,38,65,97,76,13,27,50)采用快速排序,则第一趟排序后序列的状态是【 27 38 13 49 76 97 65 50】。

12.设有散列函数H(k)=k mod 13散列表为T[0?12],用线性探测再散列。假定在某一时刻T的状态为:

T:

80 85 34 0

1

2

3

4 5

6

7

8

9

0

11 12 1

15、下一个被插入的关键码是42,其插入的位置是: 【4 】。 16.请将直接选择排序算法补充完整:

void SelectSort(RecordType R[],int length) {

n = length;

for(i=1;i<=【n-1 】;i++) {

k=【 i 】; for(j=i+1;j<=n;j++)

if(R[j].key < R[k].key ) k=【 j 】; if (【 k!=i 】)

{ x=R[i];R[i]=R[k];R[k]=x; } } }

17.以下简单选择排序算法,请将算法补充完整:

void SelectSort(RecordType R[ ] , int length)

?

n=length;

for ( i=1 ;i<= n-1; i++) { k=j ;

for ( j=i+1; j<=n ; j++ ) if( R[j].key < R[k].key ) k=j; if (k!=i)

{x=R[i] ;R[i]=R[k] ;R[k]=x;} }

?

18.以下是直接选择排序的算法。请分析算法,并在横线上填充适当的语句。 void select(seqlist r,int n)

{for(i=1;i<=【n-1】;i++)/*每次循环,选择出一个最小键值*/ { k=i;

for(j=i+1;j<=n;j++)

if(r[j].key

if(【k!=i】)swap(r[k],r[i]);/*函数swap(r[k],r[i])交换r[k]和r[i]的位置*/ }

}

19.以下为直接插入排序的算法。请分析算法,并在______上填充适当的语句。

void straightsort(seqlist r,int n) { for(i=【2】;i<=n;i++)

{ r[0]=r[i]; j=i-1;

while(r[0].key

j--; }

r[j+1]= 【 r[0] 】;

}

}

20.直接插入排序的基本操作是:将第i个记录插入到前i-1个已排好序的记录中。请将如下的直接插入排序算法补充完整:

void InsSort ( RecordType R[] , int length) { for(i=2 ; i<=length ; i++)

{ R[0]= 【r[j] 】;

for(j = i-1;【r[0].key

R[【j+1】]=R[0]; }

}

21.请将如下的折半查找算法补充完整: int BinSrch (SqList L, KeyType k) {

low=1 ; high=L.length;/*置区间初值*/ while( low<=high) {

mid=【 (Low+High)/2】;

if (k= =L.r[mid]. key) return(mid); else if (【k

return (0); }

22.如下算法是折半查找算法,请将算法补充完整:

typedef struct {

KeyType key;

OtherType other_data; } RecordType; typedef struct {

RecordType r[Maxsize]; int length; }RecordList;

int BinSrch (RecordListL,KeyType k)

o

High= n-1; while ( low<=high) {

mid = (Low + High)/2;

if ( k== L.r[mid].key) return (mid);