新建 文本文档.txt

来自「huffmancode哈弗曼编码 c++实现」· 文本 代码 · 共 114 行

TXT
114
字号
#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 + =
减小字号Ctrl + -
显示快捷键?