您当前的位置: 首页 >  数据结构

川川菜鸟

暂无认证

  • 5浏览

    0关注

    969博文

    0收益

  • 0浏览

    0点赞

    0打赏

    0留言

私信
关注
热门博文

数据结构 哈夫曼编码/译码器

川川菜鸟 发布时间:2021-07-07 13:51:54 ,浏览量:5

题目8:哈夫曼编码/译码器 实验类型(验证/设计/创新):设计 学时:16 课程设计内容: 设计一个哈夫曼编码/译码系统,对一个文本文件中的字符进行哈夫曼编码,生成编码文件;反过来,可将一个编码文件译码还原为一个文本文件(.txt)。要求: 7.输入一个待压缩的文本文件名, 统计文本文件中各字符的个数作为权值,生成哈夫曼树; 8.将文本文件利用哈夫曼树进行编码,生成压缩文件; 9.输入一个待解压的压缩文件名称,并利用相应的哈夫曼树将编码序列译码; 10.可显示指定的压缩文件和文本文件; 课程设计要求: 熟练掌握哈夫曼树的构建方法;能够运用哈夫曼树实现哈夫曼编码和译码。 重点难点: 【本课程设计重点】哈夫曼树的构建和哈夫曼编码。 【本课程设计难点】各字符出现频率的统计、哈夫曼树的构建和哈夫曼译码。

//
// Created by andyzhong on 2021/7/1.
//
#include

#include

#include

#include



using namespace std;



char filenamemi[100];

char filefile[100];

char filebian[100];



typedef struct

{
    int weight;

    char flag;

    int parent, lchild, rchild;

} HTNode, *HuffmanTree;

typedef struct ASCII

{
    char flag;

    int c;

    struct ASCII *next;

} ASCII, *LinkList;

typedef struct txt

{
    char flag;

    char huffman[5000];

} txtNode;



LinkList L;

typedef char **HuffmanCode;



bool InitList(LinkList &L)//初始化链表

{
    L = new ASCII;

    L->c  = 1;

    L->next = NULL;

    return true;

}



void Show(LinkList L)//显示链表

{
    LinkList p;

    p = L->next;

    while(p)

    {
        printf("  %c, %d\n", p->flag, p->c);

        p = p->next;

    }

    coutflag == a)//如果在文本中出现了, 当前字符, 那么当前字符的权重值++

            {
                s->c++;

                instance = 1;

                break;

            }

            s = s->next;

        }

        if(instance == 0)//如果当前文本没有该字符, 那么, 创建该字符,插入到文本当中

        {
            p = new ASCII;

            p->flag = a;

            p->c = 1;

            m->next = p;

            p->next = NULL;

            m = p;

            num++;//文本中多少结点

        }

        instance = 0;

    }

    cout            
关注
打赏
1665165634
查看更多评论
0.1658s