⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 新建 文本文档.txt

📁 huffmancode哈弗曼编码 c++实现
💻 TXT
字号:
#include "stdio.h"
#include "iostream.h"
#include "malloc.h"
class LettFreq {

    private 
	char lett; // A letter

    private 
	int freq; // Frequenc

   

    public LettFreq(int f, char l) { 

       freq = f; 

       lett = l; 

    }   

    public LettFreq(int f) { 

       freq = f; 

    }   

   

    public int weight() { return freq; }

    public char letter() { return lett; };

}

class HuffTree {

    private BinNode root;

    public HuffTree(LettFreq val){

      root = new BinNode(val);

    }

    public HuffTree(LettFreq val, HuffTree l, HuffTree r){

       root = new BinNode(val, l.root(), r.root());

    }

   

    public BinNode root(){

         return root;

    }   

    public int weight() {

         return ((LettFreq)root.element()).weight();

    }

    public HuffTree buildTree(MyList hufflist){

       HuffTree temp1, temp2, temp3;

       LettFreq tempnode;

   

       hufflist.sort();

       while(hufflist.size()>=2){    

          hufflist.setFirst();

          temp1 = (HuffTree)hufflist.remove();

          temp2 = (HuffTree)hufflist.remove();

          tempnode = new LettFreq(temp1.weight() + temp2.weight());

          temp3 = new HuffTree(tempnode, temp1, temp2);

      

          for(hufflist.setFirst();hufflist.isInList();hufflist.next()){

             if(temp3.weight() >= ((HuffTree)(hufflist.currValue())).weight()){

                hufflist.insert(temp3);

                break;

             }         

          }

          if(!hufflist.isInList())

             hufflist.append(temp3);

       }

       hufflist.setFirst();

       return (HuffTree)hufflist.remove();

    }

} 

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -