数据结构课程设计之哈夫曼编码模块

心血来潮只为完成一个完美的课程设计,下面算是单独的一个模块实现吧!但是为了拆分,我还是费了一些小心思的~因为开始调试好的代码,虽说没有华丽丽的页面,但基本的功能我还是都实现了的,包括哈夫曼编码、译码和从文件中读取还有向文件中写入,不求尽善尽美,但求问心无愧吧!但是在遇到拆分问题时,还是有时候需要好好考虑一下,比如全局变量的使用和函数体的声明,最好不要把全局变量和函数声明都放在.h文件中,因为在把.h文件作为头文件包含在所有的.cpp文件中时,每包含一次就会被重新定义一次,这样就会造成函数的重定义和变量名的重定义,所以对于函数声明和全局变量的处理,是谁用谁声明,定义只有一次,其他的文件中再使用时,对于变量,需要被extern进去,.h文件中只放一个结构体类型和基本常量即可。

以下就是代码了,八个字符的,比较丑,请大家多多谅解!

未拆分之前,代码实现如下:

#include 
#include 
#include 
#include 

using namespace std;

typedef struct
{
    int weight;
    int parent,lchild,rchild;
} HTNode,*HuffmanTree; ///动态分配数组存储哈弗曼树
typedef char **HuffmanCode;///动态分配数组存储哈弗曼编码

char str_all[100];
char str_all2[100];
int k,k2;

void Select(HuffmanTree HT,int n,int &s1,int &s2)
{
    int minn=99999998,maxx=99999999;
    s1=s2=0;
    for(int i=1; i<=n; i++)
    {
        if(HT[i].parent==0)
        {
            if(HT[i].weight'0')
    {
        switch (cch)
        {
        case '1':
            cout<<"读取成功!"<



拆分之后,各个窗口拆分之后所得如下:

jiegouti.h文件:

#ifndef JIEGOUTI_H_INCLUDED
#define JIEGOUTI_H_INCLUDED

typedef struct
{
    int weight;
    int parent,lchild,rchild;
} HTNode,*HuffmanTree; ///动态分配数组存储哈弗曼树
typedef char **HuffmanCode;///动态分配数组存储哈弗曼编码



#endif // JIEGOUTI_H_INCLUDED

main.cpp

#include 
#include 
#include 
#include 
#include "jiegouti.h"

using namespace std;

char str_all[100];
char str_all2[100];
int k,k2;

void Menu();
void YiMa(HuffmanTree HT,HuffmanCode HC,int n,int w[]);
void BianMa(HuffmanCode HC);
void Add();
void Read_Out3();
void Read_Out();
void Read();
void Output(HuffmanCode HC,int n);
void HuffmanCoding(HuffmanTree &HT,HuffmanCode &HC,int w[],int n);
void Select(HuffmanTree HT,int n,int &s1,int &s2);

int main()
{

    HuffmanCode HC;
    HuffmanTree HT;
    cout<<"▁▁▁▁▁▁☆☆☆欢迎来到加密解密界面☆☆☆▁▁▁▁▁▁"<'0')
    {
        switch (cch)
        {
        case '1':
            cout<<"读取成功!"<



my_function.cpp

#include 
#include 
#include 
#include 
#include "jiegouti.h"

using namespace std;

extern char str_all[100];
extern char str_all2[100];
extern int k,k2;

void Select(HuffmanTree HT,int n,int &s1,int &s2)
{
    int minn=99999998,maxx=99999999;
    s1=s2=0;
    for(int i=1; i<=n; i++)
    {
        if(HT[i].parent==0)
        {
            if(HT[i].weight




你可能感兴趣的:(数据结构)