数据结构实验报告

1、上机题目:哈夫曼树的建立算法实现

        需求分析:

  1. 输入参数的格式和合法取值范围:整型,(-32768,32767);
  2. 输出的格式:printf("%d\t%d\t%d\t%d\t%d\n",q,Huff[q].weight,Huff[q].parent,Huff[q].lchild,Huff[q].rchild);
  3. printf("½Úµã\tweight\tparent\tlchild\trchild\n");
  4. 测试数据:{3,7,5,1}
        详细设计:

                

  1. 构造哈夫曼树

for (i=n+1;i<2*n;i++)         

  {

    a=MAXNODE;

    b=MAXNODE;

    x=0;

    y=0;

    for(l=1;l<i;l++)

    {

      if(Huff[l].parent==-1&&Huff[l].weight<a)

      {

        b=a;

        y=x;

        a=Huff[l].weight;

        x=l;

      }

      else

        if(Huff[l].parent==-1&&Huff[l].weight<b)

      {

        b=Huff[l].weight;

        y=l;

      }

}

    1. 确定存储结构,用三叉链表实现哈夫曼树类型定义

typedef struct

{

  int weight;

  int parent,lchild,rchild;

}HNodeType,*Huff[MAXNODE+1];

    1. 初始化数组

for (i=1;i<=2*n;i++)          

  {

    Huff[i].weight=0;

    Huff[i].parent=-1;

    Huff[i].lchild=-1;

    Huff[i].rchild=-1;

  }

    1. 输出哈夫曼树的HuffNode

printf("½Úµã\tweight\tparent\tlchild\trchild\n");

  for(q=1;q<=2*n-1;q++)

  {

    printf("%d\t%d\t%d\t%d\t%d\n",q,Huff[q].weight,Huff[q].parent,Huff[q].lchild,Huff[q].rchild);

  }

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值