2017年电大电大数据结构(本)形成性考核册(作业1-4)原题带答案 下载本文

(2)

for(j=1; (1)j<=n-1 ;j++); {flag=0;

for(i=1; (2)i<=n-j ;i++) if(a[i].key>a[i+1].key)

{flag=1; temp=a[i];

(3)a[i]=a[i+1] ; (4)a[i+1]=temp ; }

if(flag= =0)break; 中序遍历:2,3,4,5,6,7,14,16,18

四、程序填空题

1.以下直接输入排序算法对存放在a[0],a[1],···,a[n-1]中,长度为n的记录序列按关键字key由小到大排序,完成程序中的空格部分。 void disort (NODE a[ ], int n) { int I,j;

NODE temp; /*工作单位*/ for (i=1;i

while (__①_ j>=0___&&temp.key

a[j+1]=____④__ temp __; } }

2.以下冒泡法程序对存放在a[1],a[2],……,a[n]中的序列进行冒泡排序完成程序中的空格部分,其中n是元素个数,程序按升序排列。 Void bsort (NODE a[ ], int) { NODE temp; int i,j,flag;

else if(a[mid].key

}

return -1; /*查找失败*/ }

2.编写顺序查找算法。 顺序查找算法如下:

int search(NODE a[],int n, int k)

/*在a[0]~a[n-1]中顺序查找关键字等于k的记录。查找成功时返回该记录的下标,失败时返回-1*/

}

}

程序中flag的功能是 (5)当某趟冒泡中没有出现交换则已排好序结束循环 五、算法设计题

1.写出在二叉树中删除一个结点的算法,且使删除后仍为二叉树,设删除的结点由指针p所指,其双亲结点由指针f所指,并假设被删除结点是其双亲结点的右孩子。

折半查找算法如下;

int Binary_Search(NODE a[],int n, int k)

/* 在a[0]到a[n-1]中,用折半查找算法查找关键字等于k的记录,查找成功返回该记录的下标,失败时返回-1 */

{

int low,mid,high; low=0; high=n-1; while(low<=high) {

mid=(low+high)/2; if(a[mid].key==k) return mid; /*查找成功,返回查找到的记

录的下标*/ {

int i=0;

while(i

*/

i++;

if(a[i].key=k) /*查找成功*/

return i;

else return -1; /*查找失败*/ }

六、完成:实验5――查找

实验6——排序

根据实验要求(见教材P207-208)认真完成本实验,并提交实验报告。

13

49 49 最新资料,word文档,可以自由编辑!! 49 83 47 41 83 59 41 精43 47 41 43 59 83 59 41 41 49 品 47 43 47 83 43 59 83 49 59 文

59 43 档 43 43 47 59 47 49 47 41 83 49 下 49 41 83 83 59 41 59 47 49 载 47 49 59 83 43 41 83 43 41

【本页是封面,下载后可以删

!】

14