亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频

? 歡迎來到蟲蟲下載站! | ?? 資源下載 ?? 資源專輯 ?? 關于我們
? 蟲蟲下載站

?? hemanhu.txt

?? 這個程序還不錯
?? TXT
?? 第 1 頁 / 共 2 頁
字號:
數據結構課程設計_赫夫曼編譯碼器 

[問題描述]
利用哈夫曼編碼進行通信可以大大提高信道利用率,縮短信息傳輸時間,降低傳輸成本。但是,這要求在發送端通過一個編碼系統對待傳數據預先編碼,在接收端將傳來的數據進行譯碼(復原)。對于雙工信道(即可以雙向傳輸信息的信道),每端都需要一個完整的編/譯碼系統。試為這樣的信息收發站寫一個哈夫曼碼的編/譯碼系統。
[基本要求]
一個完整的系統應具有以下功能:
(1)I:初始化(Initialization)。從終端讀入字符集大小n,以及n個字符和n個權值,建立哈夫曼樹,并將它存于文件hfmTree中。
(2)E:編碼(Encoding)。利用已建好的哈夫曼樹(如不在內存,則從文件hfmTree中讀入),對文件ToBeTran中的正文進行編碼,然后將結果存入文件CodeFile中。
(3)D:譯碼(Decoding)。利用已建好的哈夫曼樹將文件CodeFile中的代碼進行譯碼,結果存入文件TextFile中。
(4)P:印代碼文件(Print)。將文件CodeFile以緊湊格式顯示在終端上,每行50個代碼。同時將此字符形式的編碼文件寫入文件CodePrin中。
(5)T:印哈夫曼樹(Tree printing)。將已在內存中的哈夫曼樹以直觀的方式(樹或凹入表形式)顯示在終端上,同時將此字符形式的哈夫曼樹寫入文件TreePrint中。
[測試數據]
(1)利用下面這道題中的數據調試程序。
某系統在通信聯絡中只可能出現八種字符,其概率分別為0.25,0.29,0.07,0.08,0.14,0.23,0.03,0.11,試設計哈夫曼編碼。
(2)用下表給出的字符集和頻度的實際統計數據建立哈夫曼樹,并實現以下報文的編碼和譯碼:“THIS PROGRAM IS MY FAVORITE”。
字符 空格  A   B   C   D   E   F   G   H   I   J   K   L   M
頻度 186   64  13  22  32 103  21  15  47  57  1   5   32  20
字符  N    O   P   Q   R   S   T   U   V   W   X   Y   Z
頻度  57   63  15  1   48  51  80  23  8   18  1   16  1

[實現提示]
(1) 編碼結果以文本方式存儲在文件CodeFile中。
(2) 用戶界面可以設計為“菜單”方式:顯示上述功能符號,再加上“Q”,表示退出運行Quit。請用戶鍵入一個選擇功能符。此功能執行完畢后再顯示此菜單,直至某次用戶選擇了“Q”為止。
(3) 在程序的一次執行過程中,第一次執行I,D或C命令之后,哈夫曼樹已經在內存了,不必再讀入。每次執行中不一定執行I命令,因為文件hfmTree可能早已建好。

下面是對這個問題寫的一個程序,但是其中有很多難以理解的地方,請大家多多指教啊.
#include<stdio.h>
#include<string.h>
#include<stdlib.h>
#include<ctype.h>
    int n;
   struct node{
       int w;
      int flag;
      char c;
      struct node *plink,*llink,*rlink;
      char code[50];

      }*num[100],*root;
   FILE *fp;
   char tmpcode[50];
   int t=0;

void main(void)
{
    int i;
   void settree(void);   //建立樹
   void code(void);     //對文件編碼
   void decode(void);   // 譯碼
   void disp(void)  ;
     root=(struct node*)malloc(sizeof(struct node));
   puts("*******************哈夫曼編/譯碼器演示******************************");

   while(1){
start:

   puts("1. 初始化      2. 編碼       3. 譯碼      4.顯示編碼表    5. 退出");
   while(scanf("%d",&i)!=1)
   {
      while(getchar()!='\n')
      continue;
       puts("輸入錯誤!");
      puts("請重新輸入!");
      puts("1. 初始化      2. 編碼       3. 譯碼    4.顯示編碼表   5. 退出");
    }
   switch (i)
   {
       case 1:
          settree();
         break;
       case 2:
          code();
         break;
      case 3:
          decode();
          break;
      case 4:
           disp();
          break;
      case 5:
           exit(0);
      default:
          puts("輸入錯誤!");
         puts("請重新輸入!");
         goto start;
   }
    }
}
void settree(void)
{
     int i,j,k;
     struct node *p1,*p2,*tmp,*p;
     void go(struct node *);
     void setcode(struct node *);//建立每一個字符的編碼
     void printtree(struct node *);
     puts("輸入字符集的大小:");
     scanf("%d",&n);
     while(getchar()!='\n')
     continue;

     for(i=0;i<n;i++)
     {
         p=(struct node *)malloc(sizeof(struct node));
         puts("請輸入一個字符");
         scanf("%c",&p->c);
         while(getchar()!='\n')
         continue;
         puts("請輸入該字符的權值:");
         scanf("%d",&p->w);
         while(getchar()!='\n')
         continue;

         p->plink=NULL;
             p->rlink=NULL;
             p->llink=NULL;
         num[i]=p;
     }

     for(i=0;i<n-1;i++)  //(遞增)排序
     {
         for(j=i+1;j<n;j++)
      {
         if(num[i]->w>num[j]->w)
         {
             tmp=num[i];
            num[i]=num[j];
            num[j]=tmp;
         }
      }
     }
     /*******************************開始建立樹***********************/
     num[n]=NULL;    //結束標志
     k=n;
     while(num[1]!=NULL)
     {
         p=(struct node *)malloc(sizeof(struct node));
         p1=num[0];
         p2=num[1];
         p->llink=p1;
         p->rlink=p2;
         p->plink=NULL;
         p1->plink=p;
         p2->plink=p;
         p->w=p1->w+p2->w;

         for(i=1;i<k;i++)
         {
            num[i]=num[i+1];
         }

         k--;
         num[0]=p;
         for(i=0;i<k-1;i++)  //排序
             {
                 for(j=i+1;j<k;j++)
              {
                 if(num[i]->w>num[j]->w)
                 {
                     tmp=num[i];
                    num[i]=num[j];
                    num[j]=tmp;
                 }
              }
             }
     }

     root=num[0];
     /*建立完畢*/
     /*寫入文件,前序*/
     if((fp=fopen("c:\\hfmtree.wxl","wb"))==NULL)
     {
             puts("文件打開錯誤!");
         getchar();
         exit(0);
     }
     setcode(root);
     go(root);
     fclose(fp);
}
void setcode(struct node *p)
{
     if(p->llink==NULL&&p->rlink==NULL)
     {
         tmpcode[t]='\0';
         strcpy(p->code,tmpcode);
     }
     else
     {
         tmpcode[t++]='0';
             setcode(p->llink);
         t--;
         tmpcode[t++]='1';
         setcode(p->rlink);
         t--;
     }
}

 

void go(struct node *p)
{

     if(p->llink==NULL&&p->rlink==NULL)
     {
         fputc('(',fp);
         fputc(p->c,fp);
         fputs(p->code,fp);
         fputc(')',fp);
     }
     else
     {

             go(p->llink);
         go(p->rlink);
     }
}

void code(void)
{
    FILE *fp1,*fp2,*fp3;
   char ch1,ch2,c;
   if((fp1=fopen("c:\\hfmtree.wxl","rb"))==NULL)
     {
             puts("文件打開錯誤!");
         getchar();
         exit(0);
     }
    if((fp2=fopen("c:\\tobetrans.txt","rb"))==NULL)
     {
             puts("文件打開錯誤!");
         getchar();
         exit(0);
     }
     if((fp3=fopen("c:\\codefile.wxl","wb"))==NULL)
     {
             puts("文件打開錯誤!");
         getchar();
         exit(0);
     }

     while((ch1=fgetc(fp2))!=EOF)
     {
         t=0;


         while((ch2=fgetc(fp1))!=EOF)
         {
            if(ch1==ch2)
            {
                while((c=fgetc(fp1))!=')')
                {
                    tmpcode[t++]=c;
                }
                tmpcode[t]='\0';
                fputs(tmpcode,fp3);
                fputc('@',fp3);
                rewind(fp1);
                break;
            }
         }
     }
     fclose(fp1);
     fclose(fp2);
     fclose(fp3);
}

void decode(void)
{
    FILE *fp1,*fp2,*fp3;
   char ch1,ch2,ch3;
   char temp_3[20];
   char temp_1[20];
   int t1,t3;
   if((fp1=fopen("c:\\hfmtree.wxl","rb"))==NULL)
   {
             puts("文件打開錯誤!");
         getchar();

?? 快捷鍵說明

復制代碼 Ctrl + C
搜索代碼 Ctrl + F
全屏模式 F11
切換主題 Ctrl + Shift + D
顯示快捷鍵 ?
增大字號 Ctrl + =
減小字號 Ctrl + -
亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频
欧美变态凌虐bdsm| 国产精品久久久久久久久动漫| 国产在线观看一区二区| 日韩精品亚洲一区| 亚洲一区在线观看免费观看电影高清| 亚州成人在线电影| 国产精品综合久久| 成人av电影在线网| 欧美日韩综合在线| 欧美精品一级二级| 国产精品丝袜黑色高跟| 成人国产视频在线观看| 中文字幕日韩欧美一区二区三区| 亚洲欧洲日韩一区二区三区| 亚洲成av人**亚洲成av**| 激情国产一区二区| 99久久精品情趣| 五月天激情小说综合| 国产精品伊人色| 精品污污网站免费看| 欧美一区二区三区婷婷月色| 国产精品日韩成人| 亚洲mv大片欧洲mv大片精品| 久久电影网电视剧免费观看| 色94色欧美sute亚洲线路二| 久久久亚洲午夜电影| 一区二区三区在线视频免费| 精品在线播放午夜| 亚洲乱码中文字幕| 日韩电影在线免费看| 久久精品99久久久| 成人激情校园春色| 精品粉嫩超白一线天av| 亚洲一区二区av在线| 久久精品av麻豆的观看方式| 在线国产电影不卡| 亚洲妇熟xx妇色黄| 国产成人av一区二区三区在线| 欧美亚洲综合在线| 欧美国产在线观看| 蜜臀av性久久久久蜜臀aⅴ| 92精品国产成人观看免费| 久久久久久电影| 久久国产精品色| 91精品免费观看| 亚洲r级在线视频| 在线欧美日韩精品| 天天综合网 天天综合色| 国内外精品视频| 国产精品69毛片高清亚洲| 欧美色综合影院| 亚洲激情中文1区| 在线播放国产精品二区一二区四区| 成人黄色在线视频| 色哟哟欧美精品| 久久这里都是精品| 美女久久久精品| 欧美日本乱大交xxxxx| 亚洲视频精选在线| 夫妻av一区二区| 国产亚洲女人久久久久毛片| 免费成人在线影院| 欧美日韩成人综合在线一区二区| 国产精品色一区二区三区| 99国产欧美另类久久久精品| 中文字幕一区在线观看视频| 丁香另类激情小说| 久久看人人爽人人| 99视频国产精品| 久久电影国产免费久久电影| 欧美日精品一区视频| 久久se精品一区二区| 亚洲午夜久久久久久久久久久| 91精品国产91久久久久久最新毛片 | 18涩涩午夜精品.www| 国产精品一级黄| 亚洲综合av网| 国产欧美中文在线| 国产精品一区二区视频| 91精品一区二区三区在线观看| 一区二区不卡在线视频 午夜欧美不卡在| 成人精品免费网站| 91在线国内视频| 国产精品一区二区在线观看网站| 成人激情免费电影网址| 91免费在线播放| 久久众筹精品私拍模特| 精品在线观看视频| 2024国产精品| 蜜桃av一区二区| 国产精品久久久一区麻豆最新章节| 欧美丝袜丝交足nylons| 免费观看在线色综合| 男男视频亚洲欧美| 精品av久久707| 不卡一卡二卡三乱码免费网站| 国产亚洲欧美一区在线观看| 成人黄色国产精品网站大全在线免费观看 | 国产麻豆精品久久一二三| 欧美一区二视频| 理论电影国产精品| 亚洲精品一区二区三区四区高清| 福利电影一区二区三区| 欧美日韩午夜影院| 国产精品嫩草影院av蜜臀| 91美女在线看| 午夜久久久影院| 日韩精品一区二区三区四区视频| 狠狠色2019综合网| 国产午夜精品理论片a级大结局| av电影天堂一区二区在线| 亚洲最新视频在线播放| 欧美日韩国产综合一区二区| 美国三级日本三级久久99| 久久毛片高清国产| 在线观看日韩精品| 久久精品国产在热久久| 欧美国产一区二区| 色综合一区二区| 秋霞成人午夜伦在线观看| 欧美高清一级片在线观看| 欧美图片一区二区三区| 狠狠色丁香久久婷婷综合丁香| 一区在线中文字幕| 69精品人人人人| 成人精品鲁一区一区二区| 石原莉奈一区二区三区在线观看| 久久伊人中文字幕| 欧美日韩精品是欧美日韩精品| 免费欧美高清视频| 亚洲免费资源在线播放| 欧美不卡一二三| 在线精品视频免费观看| 国产在线精品不卡| 亚洲在线视频一区| 久久精品一区二区三区四区| 欧美最猛黑人xxxxx猛交| 极品少妇xxxx精品少妇偷拍| 中文字幕不卡在线观看| 欧美日韩一区二区不卡| 国产电影一区在线| 日韩精品成人一区二区三区| 成人欧美一区二区三区| 欧美性受xxxx| 国产91在线|亚洲| 免费在线观看成人| 国产精品久久久久aaaa| 欧美videossexotv100| 色拍拍在线精品视频8848| 国产乱码精品1区2区3区| 午夜欧美在线一二页| 日本一区二区高清| 欧美成人r级一区二区三区| 色综合天天综合网天天看片 | 欧美精品黑人性xxxx| 91亚洲国产成人精品一区二三| 久久精品理论片| 亚洲免费观看高清在线观看| 国产福利一区二区三区视频| 色视频一区二区| 2024国产精品视频| 99re8在线精品视频免费播放| 欧美不卡视频一区| 综合电影一区二区三区 | 日本欧美在线看| 韩国精品一区二区| 日本电影亚洲天堂一区| 国产精品免费看片| 成人avav影音| 日韩av一级片| 亚洲男人天堂一区| 久久精品欧美一区二区三区不卡| 国产老肥熟一区二区三区| 欧美激情在线一区二区| 亚洲精品精品亚洲| 亚洲视频香蕉人妖| 国产盗摄一区二区三区| 9191精品国产综合久久久久久| 亚洲日本中文字幕区| 国产永久精品大片wwwapp| 日韩一区二区不卡| 亚洲国产成人tv| 欧美日韩在线播放三区| 国产精品乱码久久久久久| 国产不卡高清在线观看视频| 久久精品夜色噜噜亚洲aⅴ| 蓝色福利精品导航| 欧美一区二视频| 成人影视亚洲图片在线| 国产成人在线视频播放| 国产精品一二三四五| 麻豆精品国产传媒mv男同| 亚洲高清视频中文字幕| 亚洲视频在线观看一区| 亚洲欧美日韩在线播放| 精品国产免费人成在线观看| 日韩免费观看高清完整版| 日韩一卡二卡三卡| 在线观看一区不卡| 在线一区二区三区做爰视频网站|