亚洲欧美第一页_禁久久精品乱码_粉嫩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一区二区三区免费野_久草精品视频
欧洲视频一区二区| 在线观看成人免费视频| 亚洲mv在线观看| 久久精品人人做人人爽人人| 欧美日韩一二区| 成人午夜在线视频| 国产成人综合亚洲网站| 免费欧美在线视频| 日韩制服丝袜先锋影音| 亚洲激情图片一区| 国产精品白丝在线| 亚洲另类春色国产| 中文字幕亚洲在| 综合久久给合久久狠狠狠97色| 久久免费电影网| 久久免费看少妇高潮| 国产三区在线成人av| 26uuu国产日韩综合| 精品国产一区二区三区四区四| 5858s免费视频成人| 欧美一区二区三区小说| 欧美一区二区视频网站| 日韩欧美一卡二卡| 久久久不卡网国产精品一区| 日韩理论片网站| 亚洲aⅴ怡春院| 久国产精品韩国三级视频| 韩国女主播一区| 99热精品一区二区| 欧美丰满高潮xxxx喷水动漫| 久久视频一区二区| 亚洲麻豆国产自偷在线| 奇米影视一区二区三区| 懂色中文一区二区在线播放| 91麻豆国产福利精品| 欧美一区二区三区白人| 国产午夜久久久久| 一区二区三区小说| 国产美女一区二区三区| 在线观看一区二区精品视频| 精品国产亚洲一区二区三区在线观看| 国产日韩欧美精品综合| 亚洲二区视频在线| 成人av在线资源网| 精品久久国产97色综合| 洋洋成人永久网站入口| av中文字幕在线不卡| 欧美大片免费久久精品三p| 一级做a爱片久久| 丁香婷婷深情五月亚洲| 精品av久久707| 免费在线观看一区| 91国产丝袜在线播放| 中文字幕 久热精品 视频在线| 奇米色一区二区三区四区| 欧美图区在线视频| 亚洲精品国产高清久久伦理二区| 高清日韩电视剧大全免费| 精品久久久久久久久久久久久久久久久 | 极品美女销魂一区二区三区| 欧美亚洲一区二区在线| 中文字幕在线一区二区三区| 国产麻豆一精品一av一免费 | 欧美亚洲一区二区在线观看| 欧美韩国日本一区| 高清日韩电视剧大全免费| 欧美激情一区二区三区| 成人动漫中文字幕| 国产精品成人午夜| 色综合久久六月婷婷中文字幕| 中文字幕亚洲精品在线观看| 91丨九色丨尤物| 亚洲一区中文在线| 欧美高清你懂得| 日韩一区欧美二区| 欧美一区二区三区成人| 极品美女销魂一区二区三区免费| 久久亚洲私人国产精品va媚药| 国产在线看一区| 最新久久zyz资源站| 在线视频欧美精品| 免费高清在线视频一区·| 久久在线免费观看| 色屁屁一区二区| 精品一区二区在线观看| 国产精品传媒在线| 欧美一卡2卡3卡4卡| 懂色av一区二区三区免费观看| 亚洲最大成人网4388xx| 精品三级在线看| 日本韩国欧美在线| 激情综合网最新| 一区二区三区美女| 久久久久久久免费视频了| 色综合久久综合网| 国产精品性做久久久久久| caoporm超碰国产精品| 日韩和欧美一区二区| 国产精品福利一区| 2023国产精品| 在线观看日韩一区| eeuss鲁片一区二区三区在线观看| 午夜激情一区二区| 亚洲精品老司机| 国产精品美女一区二区三区 | 国产日韩成人精品| 欧美一级生活片| 色94色欧美sute亚洲线路二| 国产成人免费在线观看| 精品一区二区三区av| 老司机精品视频线观看86 | 日韩一区二区电影网| 欧美自拍偷拍午夜视频| 成人免费观看视频| 风间由美一区二区三区在线观看| 久久不见久久见免费视频1| 日韩有码一区二区三区| 午夜精品福利一区二区三区av | 狠狠色综合色综合网络| 蜜臀av性久久久久蜜臀aⅴ四虎| 婷婷久久综合九色综合伊人色| 性做久久久久久免费观看| 亚洲福利视频一区二区| 午夜精品爽啪视频| 日本成人中文字幕在线视频| 麻豆精品视频在线| 国产制服丝袜一区| hitomi一区二区三区精品| 972aa.com艺术欧美| 欧美在线免费播放| 日韩精品一区二区三区蜜臀| 久久久综合视频| 亚洲精品欧美综合四区| 天天免费综合色| 国产精品中文欧美| 成人18视频日本| 欧美高清视频在线高清观看mv色露露十八| 欧美精品在线一区二区三区| 欧美成人午夜电影| 亚洲欧美日韩综合aⅴ视频| 99久久久无码国产精品| 91精品午夜视频| 欧美激情自拍偷拍| 97精品久久久午夜一区二区三区| 精品视频1区2区3区| 久久久99久久精品欧美| 一区二区久久久久| 国产精品一区二区91| 综合激情成人伊人| 国产精品亚洲一区二区三区妖精| 91麻豆精品91久久久久同性| 欧美国产日本韩| 蜜桃av一区二区在线观看| 91久久线看在观草草青青| 国产亚洲一区字幕| 日韩国产精品91| 色综合久久天天| 国产婷婷色一区二区三区四区| 婷婷久久综合九色国产成人| 久久免费国产精品| 经典三级一区二区| 欧美一区二区三区视频免费播放 | 国产精品不卡视频| 国产盗摄一区二区| 久久男人中文字幕资源站| 午夜影院在线观看欧美| 欧美日韩午夜在线| 中文字幕一区二区三区在线观看| 久久99精品久久久久久动态图| 欧美日韩国产成人在线免费| 亚洲激情在线激情| 一本一道久久a久久精品| 中文字幕一区二区三区乱码在线 | 国产精品丝袜在线| 成人丝袜高跟foot| 亚洲午夜在线电影| 在线视频综合导航| 日日夜夜精品视频免费| 欧美一区二区三区喷汁尤物| 日韩福利视频导航| 久久色中文字幕| 99久久婷婷国产综合精品电影 | 北岛玲一区二区三区四区| 国产精品视频一区二区三区不卡| 春色校园综合激情亚洲| 中文字幕在线观看一区二区| 北岛玲一区二区三区四区| 亚洲一区免费视频| 欧美一区二区大片| 成人免费观看视频| 日韩国产精品大片| 亚洲欧洲国产日本综合| 欧美日韩一区三区| 国产精品中文字幕日韩精品| 一卡二卡三卡日韩欧美| 久久亚洲影视婷婷| 欧美丝袜自拍制服另类| 国产在线麻豆精品观看| 亚洲国产日韩a在线播放性色| 久久亚洲一区二区三区四区|