《数据结构》(专科)已完成

相关主题
  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。

数据结构,专科

一、简答题(

1、假设一个有向图的顶点集合V={c1,c2,c3,c4,c5},弧集

S={,,,,,},

(1)试根据上述关系,画出该有向图;(2)该图有环吗?若无

环,则写出它的一个拓扑有序序列;若有环,请写出组成环的顶点序列。

答:

2、已知某二叉树的先序序列为{ ABHFDECKG },中序序列为

{ HBDFAEKCG }, 画出该二叉树。

答:二叉树是

a

/ \

b e

/ \ \

h f c

/ / \

d k g

后序是hdfbkgcea

3、已知关键字序列{70,83,100,65,10,9,7,32},现对其

从小到大排序,写出快速排序每一趟结束时的关键字状态。

答#include

int main()

{

int i,j,t;

int a[7]={70,83,100,65,10,32,7,9};

for(j=0;j<6;j++)//进行6次循环

for(i=0;i<6-j;i++)// 每次实现6-j次循环

if(a[i]>a[i+])

{ t=a[i];

a[i]=a[i+1];

a[i+1]=t;

}//每次a[i]与a[i+1]比较,大的就调换两者位置

for(i=0;i<7;i++)

printf("%d ",a[i]);

}

譬如第一次结果就是70,83,100,65,10,32,7,9

70比83小,所以位置没变。。

4、设s="I AM A WORKER",t=" GOOD",q=" WORKER"。求:

StrLength(s),StrLength(t) ,SubString(s,8,6) ,

Index(s,q,1) 。

答:strlength(s)=14;strlength(t)=4;substr(s,8,6)=worker;substr(s,q,1)=o;

5、在单链表中设置头结点有什么作用?

答:头结点就是在单链表的开始结点之前附加的一个结点,设置头结点的优点有两个:(1)由于开始结点的位置被存放在头结点的指针域中,所以在链表的第一个位置上的操作就和在表的其他位置上一样,无须进行其他特殊处理;(2)无论链表是否为空,其头指针是指向头结点的非空指针(空表中头结点的指针域空),因此空表和非空表的处理也就一样了。

6、设哈希函数H(key)=key MOD 13,用线性探测再散列法解决

冲突。对关键字序列{ 55,19,01,68,23,27,20,84 }

在地址空间为0-10的散列区中建哈希表,画出此表,并求等

概率情况下查找成功时的平均查找长度。

答:

二、编程题

1、设顺序表va中的数据元素递增有序。设计算法,将x插入到

顺序表的适当位置上,并仍保持该表的有序性。

答:.status insert_Sq(SqList *va,ElemType x)

{

int i;

if( va->length==va->listsize) exit OVERFLOW;

for( i=va->length-1;i>=0 && va->elem[i]>x;--i)

va->elem[i+1]= va->elem[i];

va->elem[i+1]=x; va->length++;

return OK;

}

2、编写递归算法, 按先序顺序输出二叉链表存储的二叉树中所

有度为2的结点。

答:int nodes(BiTree T)

{

if(!T) return 0;

return nodes(T->lchild)+nodes(T->rchild)+1; }

3、 若希望循环队列中的元素都能利用,需设一个标志域tag,并以tag 的值为0或1来区分头、

尾指针相同时队列的状态是“空”还是“满”。试编写与此结构相应的入队列的算法。

1.假设一个有向图的顶点集合V={c1,c2,c3,c4,c5},弧集S={,,,, ,}, (1)试根据上述关系,画出该有向图;

(2)写出该图从 c1出发的一个深度优先遍历序列。

答:1)邻接矩阵: ⎥⎥⎥⎥⎥⎥⎥⎥⎦

⎤⎢⎢⎢⎢⎢

⎢⎢⎢⎣⎡00

1

10001000000000100

000100000010

(2)可能的拓扑序列为:15234 (注意4一定是最后一个,2一定在1和5后) (3)12345 (4)52431

2 .已知一组权值分别是3、12、7、4、2、8、11,画出叶子分别对应这些权值的Huffman树,并求其带权路径长度。

答:已知下列字符ABCDEFG的权值分别为3,12,7,4,2,8,11,是设计哈夫曼编码

A B C D E F G

先后结合的结点:

(2,3),(5,4),(7,8),(9,11),(15,12),(20,27),如图:

编码:

A:0001

B:11

3.设关键字集合为{10,2,14,8,12,13},用堆排序方法对其从小到大排序,写出堆排序的初态、建堆和排序过程中重建堆的过程。答:

相关文档
最新文档