云题海 - 专业文章范例文档资料分享平台

当前位置:首页 > 工大数据结构第三章作业

工大数据结构第三章作业

  • 62 次阅读
  • 3 次下载
  • 2025/5/6 18:23:29

{ heap.n=0;}

Bool HeapEmpty(HEAP heap)// 判断堆是否为空 {

If(!(heap.n))return true; Else return false; }

Bool HeapFull(HEAP heap)// 判断堆是否为满

{if(heap.n==Maxsize-1) return true; Else return false; }

Void Insert(HEAP&heap,elementtype element)// 在堆 heap

中插入元素为 element 的结点 { Int I;

If(!HeapFull(heap)){ I=heap.n+1;

While((i!=1)&&(element.data>heap.elements[i/2].data)) {heap.elements[i]=heap.elements[i/2]; i/=2; }

Heap.n++;

Heap.elements[i]=element; } }

Elementtype DeleteMax(HEAP&heap)// 删除堆中最大元素

{int paraent=1,child=2; Elementtype element,tmp; If(!HeapEmpty(heap)){ Element=heap.elements[1]; Tmp=heap.elements[heap.n-]; While(child<=heap.n) {

If((child=heap.elements[child].data)break; Heap.elements[paraent]=heap.elements[child]; Paraent=child; Child*=2;}

Heap.elements[paraent]=tmp; Return element;} }

Int Find(HEAP,datatype x) {int m=1;

While((m=x) m++;

else return 0; else m++;}

if(m<=H.n)return m; else return 0; }

Int main(){ HEAP H;

Elementtype element;

Int data[]={1,3,5,7,9,11,13}; H.n=0;

For(int i=0;i<7;i++) {element.key=i+1; Element.data=data[i]; Insert(H,element);

}for(int i;i<=H.n;i++)

cout<

For(int i=1;i<=H.n;i++)cout<

Cout<<”查找的元素:”; Int x; Cin>>x;

Cout<

十二、给定叶子结点的权值集合{15, 3,14, 2, 6, 9, 16, 17},构造相应的哈夫曼树,并计算其带权路径长度。

十三、已知n=9和一组等价关系:

1≡5、6≡8、7≡2、9≡8、3≡7、4≡2、9≡3 试应用抽象数据类型MFSET设计一个算法,按输入的等价关系进行等价分类。 #include

#define n 9//MEFSET元素个数 //MFSET抽象数据型 struct mfnode{

int father;//指向父节点的链 int count;//树结点个数 };

typedef mfnode MFSET[n+1]; void Union(int A, int B, MFSET C) //合并A和B {

if(C[A].count>C[B].count) {

C[B].father=A;//B并入A

C[A].count+=C[B].count; } else {

C[A].father=B;//A并入B

C[B].count+=C[A].count; } }

int Find(int x, MFSET C)//求包含元素x的树的根 { int f; f=x;

while(C[f].father!=0)//未到根 f=C[f].father; return f; }

void Initial(int A, MFSET C)//集合A只包含元素A {

C[A].father=0; C[A].count=1; }

// 等价分类

void Equivalence(MFSET S) {

int i, j, m, k;

for(i=1; i<=n; i++) Initial(i, S); cin>>i; cin>>j;

while(!(i==0 && j==0))//输入0,0结束等价分类 {

k=Find(i, S); m=Find(j, S);

if(k!=m)

Union(k, m, S); cin>>i;

cin>>j; } }

void print_MFSET(MFSET S) //输出等价类 {

int r[n+1][n+1]={0}, k; for(int i=1; i<=n; i++)

搜索更多关于: 工大数据结构第三章作业 的文档
  • 收藏
  • 违规举报
  • 版权认领
下载文档10.00 元 加入VIP免费下载
推荐下载
本文作者:...

共分享92篇相关文档

文档简介:

{ heap.n=0;} Bool HeapEmpty(HEAP heap)// 判断堆是否为空 { If(!(heap.n))return true; Else return false; } Bool HeapFull(HEAP heap)// 判断堆是否为满 {if(heap.n==Maxsize-1) return true; Else return false; } Void Insert(HEAP&heap,elementtype element)// 在堆 heap 中插入元素为 element 的结点 { Int I; If(!HeapFull(heap)){ I=heap.n+1; While((i

× 游客快捷下载通道(下载后可以自由复制和排版)
单篇付费下载
限时特价:10 元/份 原价:20元
VIP包月下载
特价:29 元/月 原价:99元
低至 0.3 元/份 每月下载150
全站内容免费自由复制
VIP包月下载
特价:29 元/月 原价:99元
低至 0.3 元/份 每月下载150
全站内容免费自由复制
注:下载文档有可能“只有目录或者内容不全”等情况,请下载之前注意辨别,如果您已付费且无法下载或内容有问题,请联系我们协助你处理。
微信:fanwen365 QQ:370150219
Copyright © 云题海 All Rights Reserved. 苏ICP备16052595号-3 网站地图 客服QQ:370150219 邮箱:370150219@qq.com