²é¿´: 2330  |  »Ø¸´: 8

viking1992

гæ (³õÈëÎÄ̳)

[ÇóÖú] ±à³Ì·ÏÓÖÀ´ÇóÖú¹ØÓÚ¹þ¸¥ÂüÊ÷µÄC++´úÂë¡­¡­

ÆäʵÃ÷Ìì¾ÍÒª½»ÁË£¡£¡ËäÈ»¹þ¸¥ÂüµÄÔ­Àí¶¼Ã»ÓиãÇå³þµ«ÊÇʵÔÚÊÇûÓа취°¡£¡£¡£¡
Çó¸ßÈËÖ¸µãΪʲôÎҵijÌÐò±àÒëͨ¹ý¿ÉÊÇʲô¶¼ÏÔʾ²»³ö°¡£¡£¡£¡¶Ïµãµ÷ÊÔÏÔʾ´Ó½¨Á¢¶ÔÏó¾Í¿ªÊ¼error°¡£¡£¡£¡
CODE:
#include
#include
using namespace std;

struct HNode
{
        int weight;
        int parent;
        int LChild;
        int RChild;
};

struct HCode
{
        char data;
        char code[100];
};

class Huffman
{
private:
        HNode *HTree;
        HCode *HCodeTable;

public:
        Huffman(){};
        int includes(char ch); //Åжϵ±Ç°×Ö·ûÊÇ·ñ°üº¬ÔÚÒѾ­Ê¶±ðµÄ×Ö·ûÖÐ
    void frequency(char *s);  //¼ÆËãÆµÂÊ
        void outputfrequency();  //Êä³öÊäÈë×Ö·ûµÄƵÊý
        void CreateHTree(int a[],int n);
        void CreateHCodeTable(char b[],int n);
        void Encode(char *s,char *d);
        void Decode(char *s,char *d);
        void Reverse(char a[]);
       
};
    int num[100];    //´æ·Å×Ö·û¸öÊý
        int top=-1;     //CµÄ¶¥²¿Ö¸Õë
    int length=-1;   //ÊäÈëµÄ×Ö·û³¤¶È
    int count=0;       //²»Öظ´µÄ×Ö·ûµÄ¸öÊý
        char c[100];     //´æ´¢ÒѾ­Ê¶±ðµÄ×Ö·û
    char ch;        //µ±Ç°×Ö·û
    char input[100];    //ÊäÈëµÄ×Ö·û


int Huffman::includes(char ch)
{
        for(int i=0;i<=top;i++)
  if(c[i]==ch)   
   return i;
return -1;
}

void Huffman::frequency(char *s)
{
        for(int j=0;j<=length;j++)
{
  ch=s[j];   
  int i=includes(ch);
  if(i==-1)     //²»´æÔÚ
  {
   top++;
   c[top]=ch;   
   num[top]=1;  
   count++;
  }
  else         //ÒѾ­´æÔÚ
   num[i]++;
}
}

void Huffman::outputfrequency()
{
        for(int i=0;i {
  cout< }
}



void Huffman::CreateHTree(int a[],int n)
{
        HTree=new HNode[2*n-1];
        for (int i=0;i         {
                HTree[i].weight=a[i];
                HTree[i].RChild=-1;
                HTree[i].LChild=-1;
                HTree[i].parent=-1;
        }
        int x=a[0],y=a[1];
        for (i=0;i<2*n-1;i++)
        {
                for(int k=0;k                 {
                        if(HTree[k].parent==-1&&HTree[k].weight                                 x=HTree[k].weight;
                        else if(HTree[k].parent==-1&&HTree[k].weight                                 y=HTree[k].weight;
                }
                HTree[x].parent=HTree[y].parent=i;
                HTree[i].weight=HTree[x].weight+HTree[y].weight;
                HTree[i].LChild=x;
                HTree[i].RChild=y;
                HTree[i].parent=-1;
        }
}

void Huffman::Reverse(char a[])
{
        for (int i=0;i<(count-1)/2;i++)
        {
                a[i]=a[count-i-1];
        }
}

void Huffman::CreateHCodeTable(char b[],int n)
{
        HCodeTable= new HCode[n];
        for(int i=0;i         {
                HCodeTable[i].data=b[i];
                int child=i;
                int parent= HTree[i].parent;
                int k=0;
                while(parent!=-1)
                {
                        if(child==HTree[parent].LChild)
                                HCodeTable[i].code[k]='0';
                        else
                HCodeTable[i].code[k]='1';
                        k++;
                        child=parent;
                        parent=HTree[child].parent;
                }
                HCodeTable[i].code[k]='\0';
                Reverse(HCodeTable[i].code);             //
        for (int j=0;j                 {
                        cout<                 }
        }
}


void Huffman::Encode(char *s,char *d)
{
        int k=0;
        while(*d!='\0')
        {
                int i=0,j=0;
                while(HCodeTable[i].data != *d)
                        i++;
        while(HCodeTable[i].code[j] != '\0')
                        s[k++]=HCodeTable[i].code[j++];
                d++;
        }
       
}

void Huffman::Decode(char *s,char *d)
{
        int k=0;
        while (*s!='\0')
        {
                int parent=2*count-1-1;
                while(HTree[parent].LChild!=-1)
                {
                        if (*s=='0')
                          parent=HTree[parent].LChild;
                        else
                                parent=HTree[parent].RChild;
                        s++;
                }
                d[k]=HCodeTable[parent].data;
                k++;
        }
    for (int i=0;i         {cout<<"result:"<        
         
}

void main()
{
        Huffman h;
        cout<<"input:"<         char tempch;
    cin>>tempch;
    while(tempch!='\0')
        {
      input[length++]=tempch;
      cin>>tempch;
        }
      cout<           h.frequency(input);
          cout<<"characters and frequency:"<           h.outputfrequency();
          h.CreateHTree(num,count);
          h.CreateHCodeTable(c,count);

}

Çó¸ßÈ˰ïÎÒÐÞ¸ÄһϰɳÌÐòÒªÇóÊÇͳ¼ÆÊäÈëµÄ×Ö·û´®Ã¿¸ö×Ö·ûµÄ³öÏÖÆµÂʲ¢½¨Á¢¹þ·òÂüÊ÷£¬Êä³öÿ¸ö×Ö·ûµÄ±àÂ룬×Ö·û´®±àÂ룬ÒëÂë½á¹û¡£¡£¡£¡£¡£¡£¡£¡£¡£¡£²»ÐèÒªÕæµÄÓÃbitѹËõºÍ¼ÆËãѹËõ±È¡­¡­Ö»ÒªÒ»¸ö¸ÅÄî¾ÍOK¡­¡­¡­¡­¡­¡­ÎÒÕæµÄÔÚÏߵȵÄ~~~~~~~~~

[ Last edited by ΢³¾¡¢ÃÎÏë on 2011-11-28 at 18:26 ]
»Ø¸´´ËÂ¥

» ²ÂÄãϲ»¶

» ±¾Ö÷ÌâÏà¹Ø¼ÛÖµÌùÍÆ¼ö£¬¶ÔÄúͬÑùÓаïÖú:

ÓÄÈËÖñÉ£ˆ@ šwÅP¼ÅŸoÐú ÎïÇé½ñÒÑÒŠ ?Ä´ËÓûŸoÑÔ
ÒÑÔÄ   »Ø¸´´ËÂ¥   ¹Ø×¢TA ¸øTA·¢ÏûÏ¢ ËÍTAºì»¨ TAµÄ»ØÌû

viking1992

гæ (³õÈëÎÄ̳)

ÖмäÄǸö±íÇé·ûºÅÔõôȥµô¡­¡­¡­¡­¡­¡­¡­¡­= =
ÓÄÈËÖñÉ£ˆ@ šwÅP¼ÅŸoÐú ÎïÇé½ñÒÑÒŠ ?Ä´ËÓûŸoÑÔ
2Â¥2011-11-28 17:04:50
ÒÑÔÄ   »Ø¸´´ËÂ¥   ¹Ø×¢TA ¸øTA·¢ÏûÏ¢ ËÍTAºì»¨ TAµÄ»ØÌû

libralibra

ÖÁ×ðľ³æ (ÖøÃûдÊÖ)

æôÆï½«¾ü

¡¾´ð°¸¡¿Ó¦Öú»ØÌû

¡ï
jjdg(½ð±Ò+1): ¸Ðл²ÎÓë 2011-11-29 01:37:40
ÒýÓûØÌû:
2Â¥: Originally posted by viking1992 at 2011-11-28 17:04:50:
ÖмäÄǸö±íÇé·ûºÅÔõôȥµô¡­¡­¡­¡­¡­¡­¡­¡­= =

²åÈë´úÂëµÄ·½·¨ÊÇ
£Ûcode £Ý´úÂëдÔÚÕâÀï£Û/code£Ý
matlab/VB/python/c++/Javaд³ÌÐòÇë·¢QQÓʼþ:790404545@qq.com
3Â¥2011-11-28 17:07:00
ÒÑÔÄ   »Ø¸´´ËÂ¥   ¹Ø×¢TA ¸øTA·¢ÏûÏ¢ ËÍTAºì»¨ TAµÄ»ØÌû

viking1992

гæ (³õÈëÎÄ̳)

΢³¾¡¢ÃÎÏë:±à¼­ÄÚÈÝ 2011-11-28 18:32


[ Last edited by ΢³¾¡¢ÃÎÏë on 2011-11-28 at 18:32 ]
4Â¥2011-11-28 17:14:17
ÒÑÔÄ   »Ø¸´´ËÂ¥   ¹Ø×¢TA ¸øTA·¢ÏûÏ¢ ËÍTAºì»¨ TAµÄ»ØÌû

΢³¾¡¢ÃÎÏë

ľ³æ (ÖªÃû×÷¼Ò)

¡¾´ð°¸¡¿Ó¦Öú»ØÌû

´íÁË~

[ Last edited by ΢³¾¡¢ÃÎÏë on 2011-11-28 at 18:42 ]
ÈηçÔÆ±ä»Ã£¬ÎÒЦ¶ÔÈËÉú£¡
5Â¥2011-11-28 18:36:15
ÒÑÔÄ   »Ø¸´´ËÂ¥   ¹Ø×¢TA ¸øTA·¢ÏûÏ¢ ËÍTAºì»¨ TAµÄ»ØÌû

viking1992

гæ (³õÈëÎÄ̳)

ÒýÓûØÌû:
5Â¥: Originally posted by ΢³¾¡¢ÃÎÏë at 2011-11-28 18:36:15:
´íÁË~
[ Last edited by ΢³¾¡¢ÃÎÏë on 2011-11-28 at 18:42 ]

ÎÒµÄÖØüc²»ÔÚß@Ñe°¡¡­¡­Äǃɂ€±íÇé²»Ó°í‘é†×xµÄ¡­¡­¡­¡­¡­¡­
ÓÄÈËÖñÉ£ˆ@ šwÅP¼ÅŸoÐú ÎïÇé½ñÒÑÒŠ ?Ä´ËÓûŸoÑÔ
6Â¥2011-11-28 18:50:32
ÒÑÔÄ   »Ø¸´´ËÂ¥   ¹Ø×¢TA ¸øTA·¢ÏûÏ¢ ËÍTAºì»¨ TAµÄ»ØÌû

΢³¾¡¢ÃÎÏë

ľ³æ (ÖªÃû×÷¼Ò)

¡¾´ð°¸¡¿Ó¦Öú»ØÌû

ÒýÓûØÌû:
6Â¥: Originally posted by viking1992 at 2011-11-28 18:50:32:
ÎÒµÄÖØüc²»ÔÚß@Ñe°¡¡­¡­Äǃɂ€±íÇé²»Ó°í‘é†×xµÄ¡­¡­¡­¡­¡­¡­

¼òµ¥¿´ÁËÏ£¬Ò»¿ªÊ¼input:Ö®ºó£¬ÄǸöwhile(tempch!='\o')»á²úÉúÎÞÏÞÑ­»·°É£¬ºÃÏñ'\o'×Ö·ûÎÞ·¨Í¨¹ý¼üÅÌÊä½øÈ¥°É£¬ÎҸijÉÁËwhile(tempch!='1')£¬ÄÜÔËÐÐÊÇÄÜÔËÐÐÁË£¬µ«ÔËÐнá¹ûÂÒÆß°ËÔãµÄ£¬ÎÒÒ²²»ÖªµÀÄãÏëµÃµ½Ê²Ã´½á¹û¹þ~
ÈηçÔÆ±ä»Ã£¬ÎÒЦ¶ÔÈËÉú£¡
7Â¥2011-11-28 19:01:57
ÒÑÔÄ   »Ø¸´´ËÂ¥   ¹Ø×¢TA ¸øTA·¢ÏûÏ¢ ËÍTAºì»¨ TAµÄ»ØÌû

΢³¾¡¢ÃÎÏë

ľ³æ (ÖªÃû×÷¼Ò)

¡¾´ð°¸¡¿Ó¦Öú»ØÌû

¡ï ¡ï ¡ï
ÓàÔó³É(½ð±Ò+3): 2011-12-02 17:33:54
ÓàÔó³É: лл²ÎÓëÓ¦Öú£¡ 2011-12-02 17:34:03
ÕâÊÇÔËÐнá¹û£º
ÈηçÔÆ±ä»Ã£¬ÎÒЦ¶ÔÈËÉú£¡
8Â¥2011-11-28 19:06:15
ÒÑÔÄ   »Ø¸´´ËÂ¥   ¹Ø×¢TA ¸øTA·¢ÏûÏ¢ ËÍTAºì»¨ TAµÄ»ØÌû

DZÁú·ü»¢

Òø³æ (СÓÐÃûÆø)

¡¾´ð°¸¡¿Ó¦Öú»ØÌû

Õâ¸ö²Åѧѽ£¡»¹²»ÔõôÊ죬Óеã¾À½á¡£
9Â¥2011-12-01 17:08:08
ÒÑÔÄ   »Ø¸´´ËÂ¥   ¹Ø×¢TA ¸øTA·¢ÏûÏ¢ ËÍTAºì»¨ TAµÄ»ØÌû
Ïà¹Ø°æ¿éÌø×ª ÎÒÒª¶©ÔÄÂ¥Ö÷ viking1992 µÄÖ÷Ìâ¸üÐÂ
×î¾ßÈËÆøÈÈÌûÍÆ¼ö [²é¿´È«²¿] ×÷Õß »Ø/¿´ ×îºó·¢±í
[˶²©¼ÒÔ°] ÊÛSCIÒ»ÇøÎÄÕ£¬ÎÒ:8.O.551.O.5.4,¿ÆÄ¿È«,¿ÉÙ¤¼± +3 0XLacIJUOj8D 2026-08-24 8/400 2026-08-25 05:12 by BZKMTicpDhFj
[¿¼²©] ÊÛSCIÒ»ÇøÎÄÕ£¬ÎÒ:8.O.55.1.O.54,¿ÆÄ¿ÆëÈ«,¿ÉÙ¤¼± +3 0XLacIJUOj8D 2026-08-24 3/150 2026-08-25 01:47 by BZKMTicpDhFj
[»ù½ðÉêÇë] Ã÷ÌìÓ¦¸Ã¿É²éÁË£¡£¿ +5 chengyan1220 2026-08-23 5/250 2026-08-24 23:28 by ÎÒ4´ó°×²Ë
[»ù½ðÉêÇë] Èç¹û´Ë¿ÌÄãÕýÔÚΪ¹ú»ù¸Ðµ½½¹ÂÇ£¬²»·ÁÀ´ÌýÌýÕâÊס¶»ù½ðÖ®Íâ¡· +7 scalable 2026-08-24 7/350 2026-08-24 23:01 by anata1209
[ÂÛÎÄͶ¸å] ÊÛSCI-T0PÎÄÕ£¬ÎÒ:8O.5.5.1.O.54,¿ÆÄ¿ÆëÈ«,¿É+¼± +3 0XLacIJUOj8D 2026-08-24 3/150 2026-08-24 21:59 by BZKMTicpDhFj
[»ù½ðÉêÇë] ÎÒÃæÉÏÍêµ°ÁË +9 ÇÒÌý»¢Ð¥ 2026-08-20 10/500 2026-08-24 20:08 by ¿àº®À´Ïã
[»ù½ðÉêÇë] ÄÜ·ñÍ˳ö²ÎÓëµÄÃæÉÏÏîÄ¿½â³ýÏÞÏî +21 koalala 2026-08-24 24/1200 2026-08-24 19:25 by ¼ÒÓëÔ¶·½
[»ù½ðÉêÇë] 2026¹ú×ÔÈ»º¯ÆÀ·Ñµ½ÕË +17 ÑòÑü°å 2026-08-21 19/950 2026-08-24 16:52 by iaeyuan
[»ù½ðÉêÇë] ¹À¼ÆÊÇÖÜËÄ +4 archvillain 2026-08-18 4/200 2026-08-24 13:53 by zzuzxg
[»ù½ðÉêÇë] ·Å°ñǰµÄ²»µ­¶¨ 20+4 snowwithsea 2026-08-19 17/850 2026-08-24 10:20 by echo8914667
[»ù½ðÉêÇë] ¿ÆÑй¶ùÌ«ÄÑÁË +18 ÎÒ4´ó°×²Ë 2026-08-20 19/950 2026-08-24 09:47 by ¿­¶÷¹ãÊ¢´ß»¯·ÖÎ
[»ù½ðÉêÇë] ʲôʱºò¿ª½±£¿ +10 CrisMessi 2026-08-18 11/550 2026-08-24 06:50 by ¿ªÐĵÄСʨ×Ó
[½Ìʦ֮¼Ò] Ìø²ÛºóÔÚÑÐÏîÄ¿Ôõô°ì£¿ +5 ¼òµ¥»¯xn 2026-08-22 10/500 2026-08-23 12:38 by ¼òµ¥»¯xn
[»ù½ðÉêÇë] Ö»ÓÐÿÄêÕâÖÖʱºòÀ´¹ä¹äСľ³æ +24 yaoyewhu2008 2026-08-20 26/1300 2026-08-22 17:43 by kammury
[»ù½ðÉêÇë] ½ñÌì»ù½ð»á³ö½á¹ûÂð£¿20260819 +16 kkkl_v 2026-08-19 17/850 2026-08-22 16:12 by °¢²¼Abu
[»ù½ðÉêÇë] ʱ¼ä´Á½ñÌ죬20ºÅ±äÁË +5 archvillain 2026-08-20 5/250 2026-08-22 06:12 by hui_daxiao
[»ù½ðÉêÇë] ʱ¼ä´ÁÓÖ±äÁË +13 wuchongjun 2026-08-20 19/950 2026-08-21 17:21 by ×Ïɼ´¼
[»ù½ðÉêÇë] »ù½ð°¡»ù½ð +4 longfie172 2026-08-20 4/200 2026-08-21 08:58 by mark mao
[»ù½ðÉêÇë] ÖØÒªÏûÏ¢£¬ÖÐÎçϵͳÔÚά»¤ +11 yuleib84 2026-08-18 12/600 2026-08-20 11:09 by xskun
[»ù½ðÉêÇë] ½ñÌìά»¤ÏµÍ³Î¬»¤ ×£ËùÓÐÈË ¸ßÖÐ +8 gjjjzhong 2026-08-18 9/450 2026-08-18 13:01 by ¼ÒÓëÔ¶·½
ÐÅÏ¢Ìáʾ
ÇëÌî´¦ÀíÒâ¼û