- 9
- 0
- 约5.59千字
- 约 34页
- 2016-12-10 发布于重庆
- 举报
Huffman算法 制作人:赵利英 院系:信息技术学院 班级:10专升本软件工程 时间::2010年11月26日 题目要求:把一个原文件读入程序,利用huffman编码将它转换成二进制代码并存入文件,最后再把这个二进制文件读入程序并转化成原文件,然后写入一个新的文件。这也就是典型的压缩技术! 一、声明各种类型名; 二、主函数; 三、获得权重与字符; 四、创建huffman树; 五、 huffman编码; 六、代码写入文件; 七、 huffman解码; 八、比较; 一、声明各种类型名 (5) typedef与#define有相似之处,例如: typedef int COUNT;#define COUNT int的作用都是用COUNT代表int。但事实上,它们二者是不同的。 #define是在预编译时处理的,它只能作简单的字符串替换; 而typedef是在编译时处理的。实际上它并不是作简单的字符串替换,而是采用如同定义变量的方法那样来声明一个类型 ★声明一个结构体类型: (1)声明一个结构体类型的一般形式为: struct 结构体名 {成员表列}; 如:struct student {int num; char name[20]; char sex; int age; float score; char addr[30]; }; (2)在声明类型的同时定义变量 这种形式的定义的一般形式为: struct 结构体名 { 成员表列 }变量名表列; 关于结构体类型的几点说明: (1)类型与变量是不同的概念,不要混同。只能对变量赋值、存取或运算,而不能对一个类型赋值、存取或运算。在编译时,对类型是不分配空间的,只对变量分配空间。 (2)对结构体中的成员,可以单独使用,它的作用与地位相当于普通变量。 (3)成员也可以是一个结构体变量。 (4)成员名可以与程序中的变量名相同,二者不代表同样的对象。 如何使用结构体中的成员 以下3种形式等价:(p是个指针) 结构体变量.成员名 (*p).成员名 p-成员名 其中-称为指向运算符,用于结构体指针调用成员; 结构体变量的成员可以像普通变量一样进行 各种运算. (1) 可以对变量的成员赋值. student1.num=10010; “.”是成员(分量)运算符,它在所有的运算符中优先级最高,因此可以把student1.num作为一个整体来看待。上面赋值语句的作用是将整数10010赋给student1变量中的成员num。 (2) 如果成员本身又属一个结构体类型,则要用若干个成员运算符,一级一级地找到最低的一级的成员。只能对最低级的成员进行赋值或存取以及运算。 例如: 对上面定义的结构体变量student1, 可以这样访问各成员: student1.num student1.birthday.month=12; (3) 对结构体变量的成员可以像普通变量一样进行各种运算(根据其类型决定可以进行的运算)。 例如: student2.score=student1.score; sum=student1.score+student2.score; student1.age++; ++student2.age; (4) 可以引用结构体变量成员的地址,也可以引用结构体变量的地址。 例如: scanf(″%d″,student1.num); (输入student1.num的值) printf(″%o″,&student1); (输出student1的首地址) 用指向结构体的指针作函数参数 用结构体变量的成员作参数----值传递 用指向结构体变量或数组的指针作参数----地址传递 用结构体变量作参数----多值传递,效率低 void void是【空值型】的,在C++中没有空值型的常量和变量,一般主要用于函数的声明和指针的声明。在void main()声明的函数,一般没有return; 二、主函数 system(cls); 其必须包含头文件 #include stdlib.h 其作用是清楚屏幕先前的显示内容 功能:清除屏幕上的所有显示,光标置于屏幕左上角 C语言中用system(CLS); return 0是正常退出,return 非零(如1) 是异常退出;这是返回给控制台的,不在编的程序控制范围内,是给操作系统识别的,对程序无影响。如果是C中,定义void main()可以
原创力文档

文档评论(0)