《数据结构》(专科)已完成
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 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={
(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},用堆排序方法对其从小到大排序,写出堆排序的初态、建堆和排序过程中重建堆的过程。答: