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

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

?? 哈夫曼編碼.txt

?? 一個關于哈夫曼編碼的程序
?? TXT
字號:
您的位置:志宏網 >計算機 >數據結構(C語言) >哈夫曼編碼 
 
  
HuffmanTree  
實驗目的  樹型結構是一種應用極為廣泛的非線性數據結構,也是本課程的重點內容,哈夫曼樹(最優二叉樹)是樹型結構的典型應用,本次實驗突出了數據結構加操作的程序設計觀點,希望能根據樹型結構的非線性特點,熟悉各種存儲結構的特性,達到如何應用樹型結構的非線性特點,熟悉各種存儲結構的特性,達到如何應用樹型結構解決具體問題的目的.  
問題描述 利用哈夫曼編碼進行住處通訊可以大大提高信道利用率,縮短住處傳輸時間,降低成本,但是,這要求在發送端通過一個編碼系統將傳輸的數據預先編碼,在接收端通過一個譯碼系統對傳來的數據進行譯碼(復原),對于雙向傳輸信息的信道,每端都一個完整的編碼譯碼系統,試為這樣的住處收發站寫一個哈夫曼友的編碼譯碼系統.  
 
基本要求 一個完整的系統應以下功能:
1. 初始化,從終端讀入n個字符和n個權值,建立哈夫曼樹,并將它存放在文件HuffmanTree中.
2. 編碼.利用已建立好的哈夫曼樹,對要傳輸的數據正文(存在文件StextFile中)進行編碼,將結果代碼存(傳輸)到文件CodeFile中.
3. 譯碼.利用已建好的哈夫曼樹,對傳輸到達的CodeFile中的數據代碼進行譯碼,將譯碼結果存入文件RtestFile中.
4. 打印和顯示哈夫曼樹,(可以樹或凹入表的形式)
5. 打印文件.打印CodeFile,StestFile,RtestFile文件內容,以比較它們的不同.  
測試數據 1. 利用教科書例6-2中的數據調試程序.
2. 用下面給出的字符集及頻度的統計數據建立哈夫曼樹:
字符:ABCDEFGHIJKLMN
頻度:64 13 22 32 103 21 15 47 57 1 5 32 20 57 
字符:OPQRSTUVWXYZ 空
頻度:63 15 1 48 51 80 23 8 18 1 16 1 186
并實現正文"THIS PROGEAM IS MY FAVORITE"的編碼和譯碼.  
實現提示 1. 文件可以使用數組表示.
2. 用戶界面可以設計為菜單方式.
3. 第一次執行初始化程序后,哈夫曼樹已建好,以后不一定需要再建立哈夫曼樹.  
選做內容  對你的"哈夫曼友的編碼譯碼系統"的源程序代碼(包括行尾符號)進行編碼和譯碼. 



--------------------------------------------------------------------------------
本源代碼,版權所有,嚴禁復制,違者必究!
--------------------------------------------------------------------------------
測試通過,  僅供大家參考!!  

#define MAX_INIT_TREE 100
#define OK 1
#define ERROR 0
#define SCREENWIDTH 40
#define SCREENHEIGHT 40
#define MAX_FILENAME 20
#include<stdio.h>

typedef struct HTNode{
 char character;
 int weight;
 int parent,lchild,rchild;
}HTNode,*HuffmanTree;

HuffmanTree HT;

void FillTree(int n){
 int i,weight,go,j;
 char ch;
 printf("There are %d TreeNodes requere!\nInput the 1 node!\n",n);
 printf("ch\n");
 scanf("%c",&ch);
 getchar();
 printf("weight\n");
 scanf("%d",&weight);
 getchar();
 HT[1].character=ch;
 HT[1].weight=weight;
 for(i=2;i<=n;){
  go=OK;
  printf("There are %d TreeNodes requere!\nInput the %d node!\n",n,i);
  printf("ch\n");
  scanf("%c",&ch);
  getchar();
  printf("weight\n");
  scanf("%d",&weight);
  getchar();
  for(j=1;j<i;j++)
   if(HT[j].character==ch){
    printf("ERROR!\nHT[%d] is the same number!\nPlease reinput!\n",j);
    go=ERROR;
    break;
   }
  if(go){
   HT[i].character=ch;
   HT[i].weight=weight;
   i++;
  }
 }
}
void Select(int num,int *s1,int *s2){
 int i,num0,num1,num2;
 for(i=1;i<num;i++)if(!(HT[i].parent)){num1=i++;break;}
 for(;i<num;i++)if(!(HT[i].parent)){num2=i++;break;}
 if(HT[num1].weight>HT[num2].weight){
  num0=num1;num1=num2;num2=num0;
 }
 for(;i<num;i++){
  if(HT[i].weight<HT[num2].weight&&!(HT[i].parent))
   if(HT[i].weight<HT[num1].weight){
    num2=num1;num1=i;
   }else num2=i;
 }
 *s1=num1;*s2=num2;
}
int PrintFile(char *filename){
 FILE *fp;
 char ch;
 int i;
 printf("file:\t%s\n\n",filename);
 if(!(fp=fopen(filename,"r"))){
  printf("file %s is not exist!\n",filename);
  return ERROR;
 }
 while(!feof(fp))putchar(fgetc(fp));
 putchar('\n');
 fclose(fp);
 return OK;
}
int CreateHFTree(int *treenodes){
 int n,i,m,s1,s2;
 char ch;
 m=treenodes;
 printf("Tree has how many nodes?\n");
 scanf("%d",&n);getchar();
 if(n<=1||n>MAX_INIT_TREE){printf("Input ERROR!\n");return ERROR;}
 m=2*n;
 if(!(HT=(HuffmanTree)malloc(m*sizeof(HTNode))))printf("ERROR\n!");
 for(i=0;i<m;i++){
  HT[i].parent=0;
  HT[i].lchild=0;
  HT[i].rchild=0;
 }
 FillTree(n);
 for(i=n+1;i<m;i++){
  Select(i,&s1,&s2);
  HT[i].lchild=s1;
  HT[i].rchild=s2;
  HT[s1].parent=HT[s2].parent=i;
  HT[i].weight=HT[s1].weight+HT[s2].weight;
  HT[i].character='\0';
 }
 *treenodes=n+1;
 return OK;
}
void ClearScreen(){
 int i;
 for(i=0;i<SCREENHEIGHT;i++)putchar('\n');
 putchar('\n');
}
void HR(){
 int i;
 for(i=0;i<SCREENWIDTH;i++)putchar('=');
 putchar('\n');
}
int InCode(char *infile,int treenodes,char *outfile){
 FILE *in,*out;
 char ch,c[MAX_INIT_TREE];
 int self,parent,start,i;
 if(!(in=fopen(infile,"r"))){
  printf("file %s is not exist!\n",infile);
  return ERROR;
 }
 if(!(out=fopen(outfile,"w"))){
  printf("open file %s ERROR!\n",outfile);
  return ERROR;
 }
 while(!feof(in)){
  ch=fgetc(in);
  for(i=1;i<=treenodes;i++)
   if(ch==HT[i].character){
    start=MAX_INIT_TREE;
    c[--start]='\0';
    self=i;parent=HT[self].parent;
    while(parent){
     c[--start]=(HT[parent].lchild==self)?'0':'1';
     self=parent;
     parent=HT[self].parent;
    }
    while(start<MAX_INIT_TREE)fputc(c[start++],out);
    break;
   }
  if(i>=treenodes)printf("%c is not found in HuffmanTree!\n",ch);
 }
 fclose(in);
 fclose(out);
 return OK;
}
int OutCode(char *infile,int treenodes,char *outfile){
 FILE *in,*out;
 int self,child;
 char ch;
 if(!(in=fopen(infile,"r"))){
  printf("can not open file %s!\n",infile);
  return ERROR;
 }
 if(!(out=fopen(outfile,"w"))){
  printf("can not open file %s!\n",outfile);
  return ERROR;
 }
 while(!feof(in)){
  ch=fgetc(in);
  self=2*treenodes-3;
  if('0'==ch)child=HT[self].lchild;
  else child=HT[self].rchild;
  while(child){
   self=child;
   child=('0'==fgetc(in))?HT[self].lchild:HT[self].rchild;
  }
  fputc(HT[self].character,out);
 }
 return OK;
}
void PrintTree(int root,int n){
 int i;
 getch();
 printf("[%c](%d)----",HT[root].character,HT[root].weight);
 if(HT[root].rchild)PrintTree(HT[root].rchild,n+1);
 else printf("NULL\n");
 for(i=0;i<=n;i++)printf("|          ");
 printf("\n");
 for(i=0;i<n;i++)printf("|          ");
 if(HT[root].lchild)PrintTree(HT[root].lchild,n);
 else printf("NULL\n");
}
main(){
 char initfile[]={"D:\\stextfil.txt"},midfile[]={"D:\\codefile.txt"},lastfile[]={"D:\\textfile.txt"};
 int treenodes;
 ClearScreen();
 CreateHFTree(&treenodes);
 HR();getch();
 printf("The following is the tree you just inputed!\n\n");
 PrintTree(2*treenodes-3,0);HR();getch();
 PrintFile(initfile);HR();getch();
 InCode(initfile,treenodes,midfile);HR();
 PrintFile(midfile);HR();getch();
 OutCode(midfile,treenodes,lastfile);HR();getch();
 PrintFile(lastfile);HR();getch();
 printf("Now!OK!\n");
}
 
 
 

?? 快捷鍵說明

復制代碼 Ctrl + C
搜索代碼 Ctrl + F
全屏模式 F11
切換主題 Ctrl + Shift + D
顯示快捷鍵 ?
增大字號 Ctrl + =
減小字號 Ctrl + -
亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频
亚洲欧美日韩国产另类专区| 国产精品三级电影| 精品久久久久av影院| 欧美一卡二卡三卡四卡| 精品国产乱码久久久久久牛牛| 欧美一二三在线| 中国av一区二区三区| 亚洲乱码精品一二三四区日韩在线| 亚洲欧美国产毛片在线| 亚洲国产裸拍裸体视频在线观看乱了| 三级成人在线视频| 精东粉嫩av免费一区二区三区| 99久久99精品久久久久久| 91黄色小视频| 久久精品夜夜夜夜久久| 夜夜精品浪潮av一区二区三区| 久久精品免费观看| 欧洲一区在线电影| 成人免费一区二区三区在线观看| 亚洲v精品v日韩v欧美v专区 | 国产.欧美.日韩| 欧美日韩免费电影| 亚洲色图.com| 国产成人综合在线播放| 欧美喷潮久久久xxxxx| 最新不卡av在线| 成人小视频在线观看| 久久久久九九视频| 久久精品国产澳门| 欧美日韩精品一区二区| 亚洲欧美偷拍卡通变态| 成人av在线资源网站| 久久九九久精品国产免费直播| 免费精品视频最新在线| 中国av一区二区三区| 国产在线精品不卡| www.亚洲精品| 色综合久久六月婷婷中文字幕| 成人午夜av电影| 欧美老年两性高潮| 欧美性xxxxxx少妇| 久久久久久久精| 久久99精品视频| 国产日韩v精品一区二区| 精品无人区卡一卡二卡三乱码免费卡 | 久久综合给合久久狠狠狠97色69| 伦理电影国产精品| 欧美中文字幕亚洲一区二区va在线| 91精品久久久久久久91蜜桃 | 91女厕偷拍女厕偷拍高清| 亚洲品质自拍视频| 欧美日韩国产精选| 国产一区二区三区国产| 中文字幕一区二区三| 欧美日韩一区三区四区| 国产精品亚洲а∨天堂免在线| 欧美高清一级片在线观看| 在线亚洲人成电影网站色www| 亚洲午夜一区二区三区| 久久精品一区二区三区av| 91搞黄在线观看| 国产资源在线一区| 日本成人在线视频网站| 国产精品人成在线观看免费| 欧美精三区欧美精三区 | 久久蜜桃香蕉精品一区二区三区| 成人免费毛片app| 国内精品在线播放| 日韩av中文字幕一区二区| 最新久久zyz资源站| 日韩小视频在线观看专区| 日本精品裸体写真集在线观看| 视频一区二区三区在线| 亚洲美女视频在线| 国产精品无人区| 久久蜜桃香蕉精品一区二区三区| 91精品欧美一区二区三区综合在| 99久久久精品免费观看国产蜜| 激情丁香综合五月| 韩国欧美国产一区| 国产一区二区中文字幕| 久久99精品国产麻豆婷婷洗澡| 亚洲高清久久久| 一区二区三区91| 亚洲成人一区二区在线观看| 亚洲精品中文字幕在线观看| 一区二区三区欧美| 午夜精品在线视频一区| 欧美aⅴ一区二区三区视频| 丝袜亚洲精品中文字幕一区| 亚洲国产三级在线| 麻豆一区二区三| 久久99国产精品免费| 成人亚洲精品久久久久软件| 福利电影一区二区| 色88888久久久久久影院按摩| 欧美视频在线观看一区| 日韩你懂的电影在线观看| 久久久久久日产精品| 亚洲丝袜精品丝袜在线| 亚洲国产欧美日韩另类综合| 日韩国产成人精品| 国产91综合一区在线观看| 91激情在线视频| 欧美精品一区二区三区一线天视频 | 一区二区三区日韩| 久久国产夜色精品鲁鲁99| 成人免费视频视频| 精品噜噜噜噜久久久久久久久试看| 国产日韩精品一区| 激情六月婷婷久久| 在线播放国产精品二区一二区四区| 国产精品人妖ts系列视频| 日本中文一区二区三区| 在线观看亚洲a| 亚洲一二三区不卡| 99久久国产免费看| 国产精品美女久久久久av爽李琼| 精品在线播放免费| 日本美女一区二区三区视频| 国产精品影音先锋| 日韩欧美国产麻豆| 天天av天天翘天天综合网色鬼国产| jiyouzz国产精品久久| 精品第一国产综合精品aⅴ| 裸体歌舞表演一区二区| 日韩欧美123| 亚洲不卡av一区二区三区| 国产一区二区福利| 欧美无乱码久久久免费午夜一区| 99re亚洲国产精品| 欧美韩国一区二区| 亚洲h精品动漫在线观看| 天天操天天干天天综合网| 欧美午夜精品一区| 午夜欧美视频在线观看| 欧美精品123区| 日本不卡123| 国产日韩视频一区二区三区| 国产成人免费视频网站| 成人免费一区二区三区视频 | 在线中文字幕一区| 天天综合日日夜夜精品| 91官网在线免费观看| 亚洲男人的天堂在线观看| 欧美一级日韩免费不卡| 国内精品久久久久影院色| 国产精品色哟哟网站| 欧美性大战久久| 成人黄色一级视频| 日本欧洲一区二区| 亚洲国产成人自拍| 欧美精品在线观看播放| 播五月开心婷婷综合| 毛片av中文字幕一区二区| 中文字幕制服丝袜一区二区三区| 欧美日韩精品一区二区在线播放| 国产成人自拍高清视频在线免费播放| 亚洲人成在线观看一区二区| 日韩三级.com| 日本精品视频一区二区三区| 国产精品一区二区你懂的| 亚洲成人综合网站| 亚洲欧美偷拍另类a∨色屁股| 精品久久久久99| 日韩欧美一区电影| 日韩一区二区在线看片| 色88888久久久久久影院按摩 | 久久奇米777| 精品裸体舞一区二区三区| 91精选在线观看| 日韩欧美国产三级| 欧美成人a在线| 久久久久久久久久久电影| 中文久久乱码一区二区| 国产精品卡一卡二卡三| 国产女人18毛片水真多成人如厕| 日韩午夜中文字幕| 2021国产精品久久精品| 国产欧美久久久精品影院| 国产日产欧美一区二区视频| 国产精品久久久久久久久快鸭| 久久精品人人做人人爽人人| 久久人人97超碰com| 国产精品久久久久久久蜜臀 | 国产成人啪免费观看软件 | 久久色视频免费观看| 久久综合成人精品亚洲另类欧美| 国产欧美一区二区精品性色超碰| 精品久久久久久无| 亚洲色图都市小说| 久久超碰97中文字幕| av在线这里只有精品| 欧美人与禽zozo性伦| 亚洲国产精品成人综合色在线婷婷 | 成人精品在线视频观看| 欧美午夜影院一区| 国产精品亲子乱子伦xxxx裸| 亚洲国产精品麻豆| 成人久久18免费网站麻豆|