资源简介

有以下功能: 初始化 从终端读入字符集大小n及n个字符和m个权值,建立哈夫曼树,并将它存于文件hfmtree中 编码 利用已建好的哈夫曼树(如不在内存,则从文件hfmtree中读入),对文件tobetrans中的正文进行编码,然后将结果存入文件codefile中 解码 利用已建好的哈夫曼树将文件codefile中的代码进行译码,结果存入文件textfile中 打印 将文件codefile以紧凑格式显示在终端上,每行50个代码。同时将此字符形式的编码文件写入文件codeprint中 打印哈夫曼树 将已在内存中的哈夫曼树以直观的方式(树或凹入表形式)显示在终端上,同时将此字符形式的哈夫曼树写入文件treeprint中 附带详细的设计报告(最后的课程设计等级被评定为优秀)

资源截图

代码片段和文件信息

#include “huffman.h“
#include “qdebug.h“
#include 
#include 
#include 
#include 
#include 
using namespace std;



Huffman::Huffman()
{

}
void Huffman::Creat_Haffmantree(int &nQString *listt1int *listt2HNodeType *&hhh){
    HNodeType *HaffNode = new HNodeType[2 * n - 1];
    int i j;
    int m1 m2 x1 x2;
    for (i = 0; i<2 * n - 1; i++)
    {
        HaffNode[i].weight = 0;
        HaffNode[i].parent = -1;
        HaffNode[i].lchild = -1;
        HaffNode[i].rchild = -1;
        HaffNode[i].inf = “0“;
    }
    for (i = 0; i    {
         HaffNode[i].inf=listt1[i];

         HaffNode[i].weight=listt2[i];
    }
    for (i = 0; i    {
        m1 = m2 = Maxvalue;
        x1 = x2 = 0;
        for (j = 0; j        {
            if (HaffNode[j].parent == -1 && HaffNode[j].weight            {
                m2 = m1;
                x2 = x1;
                m1 = HaffNode[j].weight;
                x1 = j;
            }
            else
            {
                if (HaffNode[j].parent == -1 && HaffNode[j].weight                {
                    m2 = HaffNode[j].weight;
                    x2 = j;
                }
            }
        }
        //将找出的最小和次小合并,创造其父结点
        HaffNode[x1].parent = n + i;
        HaffNode[x2].parent = n + i;
        HaffNode[n + i].weight = HaffNode[x1].weight + HaffNode[x2].weight;
        HaffNode[n + i].lchild = x1;
        HaffNode[n + i].rchild = x2;
        HaffNode[n + i].inf = ““;
    }
// cout << “显示存储的哈弗曼树信息:“ << endl;
// cout << “权值 左孩子 右孩子 双亲“ << endl;
    QString aa=“哈夫曼树的信息(字符信息、左孩子、右孩子、权值、父节点):“;
    fstream file2;
    file2.open(“C:\\treeprint.txt“ios::out| ios::binary);
    if(!file2){
        qDebug()<<“treeprint.txt文件不能打开!\n“;
        abort();
    }
    else{file2<        for(int a=0;a<2*n-1;a++){

             file2<             file2<             file2<             file2<             file2<        }
    }
    file2.close();
    hhh=HaffNode;
    for (i = 0; i<2 * n - 1; i++)
    {
        qDebug() << HaffNode[i].weight << “   “;
        qDebug() << HaffNode[i].lchild << “   “;
        qDebug() << HaffNode[i].rchild << “   “;
        qDebug() << HaffNode[i].parent << “   “;
        qDebug() << HaffNode[i].inf ;
    }
    //写入文件
    fstream outfile1;
    outfile1.open(“C:\\hfmtree.txt“ ios::out | ios::trunc | ios::binary);//建立进行写入的文件
    if (!outfile1) //没有创建成功则显示相应信息
    {
        qDebug() << “hfmtree.txt文件不能打开“ << endl;
        abort();
    }
    for (i = 0; i<2 * n - 1; i++) //将内存中从HaffNode[i]地址开始的sizeof(HaffN

 属性            大小     日期    时间   名称
----------- ---------  ---------- -----  ----

     文件     311027  2017-02-21 15:15  ff\b2.jpg

     文件        222  2017-02-24 17:09  ff\b2.qrc

     文件     429685  2017-02-22 17:47  ff\B22.png

     文件      25655  2017-02-20 19:23  ff\back.jpg

     文件     218440  2017-02-21 14:44  ff\background.jpg

     文件         93  2017-02-24 17:10  ff\background.qrc

     文件       5756  2017-02-23 20:10  ff\button.png

     文件      20591  2017-02-23 20:54  ff\button2.png

     文件        618  2017-02-27 23:52  ff\ff.pro

     文件      18472  2017-03-02 19:39  ff\ff.pro.user

     文件       9307  2017-03-01 18:50  ff\huffman.cpp

     文件        847  2017-03-01 14:57  ff\huffman.h

     文件         90  2017-02-21 14:27  ff\image.qrc

     文件      19156  2017-03-01 15:14  ff\leef.png

     文件      19825  2017-03-01 15:56  ff\leef2.png

     文件       1094  2017-03-01 21:02  ff\main.cpp

     文件       7191  2017-03-02 19:39  ff\mainwindow.cpp

     文件        725  2017-03-01 16:52  ff\mainwindow.h

     文件       5398  2017-02-24 13:06  ff\mainwindow.ui

     文件        345  2017-02-27 19:53  ff\mydialog.cpp

     文件        326  2017-02-24 19:33  ff\mydialog.h

     文件       1202  2017-02-27 19:02  ff\mydialog.ui

     文件       4821  2017-03-02 19:39  ff\mytree.cpp

     文件        348  2017-03-01 11:30  ff\mytree.h

     文件        778  2017-03-01 16:25  ff\mytree.ui

     文件          2  2017-02-21 14:30  ff\ok.cpp

     文件      26380  2017-02-21 14:23  ff\ok.jpg

     文件         44  2017-02-24 17:10  ff\ok.qrc

     文件        180  2017-02-28 18:47  ff\queue.cpp

     文件        730  2017-02-28 20:28  ff\queue.h

............此处省略11个文件信息

评论

共有 条评论