Huffman学习记录 c语言
2015-12-07 17:51
423 查看
#include<stdio.h> struct point { int size; int Fa; int zuo; int you; }arr[100]; void New(int i,int a,int b,int A,int B) { arr[A].Fa=i; arr[B].Fa=i; arr[i].size=arr[A].size+arr[B].size; arr[i].zuo=A; arr[i].you=B; } void build(int n) { int a,b,i ,j,m,A,B; for(i=1;i<=100;i++) { arr[i].Fa=0; } m=2*n-1; for(i = n+1; i<=m;i++) { a=9999;b=9999; for(j=1 ; j <= i-1 ; j++) { if(arr[j].Fa==0 && arr[j].size < a)//找两个最小的数 { a = arr[j].size; A=j; } else if(arr[j].Fa==0 && arr[j].size < b) { b = arr[j].size; B=j; } } New(i,a,b,A,B); } } int main() { int n,i; scanf("%d",&n); for( i = 1 ; i <= n ; i++) { scanf("%d",&arr[i].size); } build(n); printf(" 左孩子 右孩子 父亲节点 大小\n"); for(i=1;i<=2*n-1;i++) { printf("i=%d %d %d %d %d\n",i,arr[i].zuo,arr[i].you,arr[i].Fa,arr[i].size); } return 0; }
相关文章推荐
- C++类中定义线程
- C++的头文件和实现文件分别写什么
- C/C++语言中函数参数传递的三种方式
- c++设计模式(2)--------简单工厂模式
- 黑马程序员——C语言——位运算符和变量存储原理
- knn之构造kd树和最近邻求取c++实现
- C语言编程中实现输入密码回显星号
- C语言中可变参数的宏定义
- c语言宏定义,可变参数的使用
- C语言中可变参数的宏定义
- Q:C++与VC++的区别
- C++创建一个动态链接库工程
- C++创建一个动态链接库工程
- 黑马程序员——C语言基础---预处理的概念及分类
- C语言学习笔记(19) 多维数组和多维指针分析
- 找不到cpp文件 C1083:cannot find \xxx\xxx.cpp
- 【第14周 项目1 - (1)验证折半查找算法】
- C语言宏定义
- 【OpenCV】How to Use Tesseract with C++ or OpenCV
- 第11周项目1 二叉树算法验证