第一篇:數據結構課程設計
數據結構課程設計
1.赫夫曼編碼器
設計一個利用赫夫曼算法的編碼和譯碼系統,重復地顯示并處理以下項目,直到選擇退出為止。要求:
1)將權值數據存放在數據文件(文件名為data.txt,位于執行程序的當前目錄中)
2)初始化:鍵盤輸入字符集大小26、26個字符和26個權值(統計一篇英文文章中26個字母),建立哈夫曼樹;
3)編碼:利用建好的哈夫曼樹生成哈夫曼編碼;
4)輸出編碼(首先實現屏幕輸出,然后實現文件輸出); 5)界面優化設計。
代碼如下:
#include
typedef struct HTNode
//結構體 { int Weight;
char ch;int Parent,Lchild,Rchild;}HTNode;typedef char * * HCode;
void Save(int n,HTNode *HT)
//把權值保存到文件 {
FILE * fp;
int i;
if((fp=fopen(“data.txt”,“wb”))==NULL)
{
printf(“cannot open filen”);
return;
}
for(i=0;i if(fwrite(&HT[i].Weight,sizeof(struct HTNode),1,fp)!=1) printf(“file write errorn”); fclose(fp); system(“cls”); printf(“保存成功!”); } void Create_H(int n,int m,HTNode *HT) //建立赫夫曼樹,進行編碼 { int w,k,j;char c;for(k=1;k<=m;k++){ if(k<=n) { printf(“n請輸入權值和字符(用空格隔開): ”); scanf(“%d”,&w); scanf(“ %c”,&c);HT[k].ch=c; HT[k].Weight=w; } else HT[k].Weight=0; HT[k].Parent=HT[k].Lchild=HT[k].Rchild=0;} int p1,p2,w1,w2; for(k=n+1;k<=m;k++){ p1=0;p2=0; w1=32767;w2=32767; for(j=1;j<=k-1;j++) { if(HT[j].Parent==0) { if(HT[j].Weight { w2=w1;p2=p1; w1=HT[j].Weight; p1=j; } else if(HT[j].Weight { w2=HT[j].Weight; p2=j; } } } HT[k].Lchild=p1;HT[k].Rchild=p2;HT[k].Weight=HT[p1].Weight+HT[p2].Weight; HT[p1].Parent=k;HT[p2].Parent=k; } printf(“輸入成功!”);} void Coding_H(int n,HTNode *HT) //對結點進行譯碼 { int k,sp,fp,p;char *cd;HCode HC; HC=(HCode)malloc((n+1)*sizeof(char *)); cd=(char *)malloc(n*sizeof(char));cd[n-1]='
主站蜘蛛池模板:
秋霞无码久久久精品交换|
日日天日日夜日日摸|
久久久久国产精品人妻aⅴ牛牛|
久久综合精品成人一本|
国产精品一区二区久久|
中文字字幕在线中文无码|
亚洲欧美日韩国产综合一区二区|
欧美日韩中文国产一区发布|
色av综合av综合无码网站|
欧洲亚洲精品久久久久|
色欲老女人人妻综合网|
日韩人妻无码精品久久久不卡|
精品人妻无码一区二区三区性|
色欲久久久中文字幕综合网|
小鲜肉自慰网站|
成人网站国产在线视频内射视频|
又大又粗又爽18禁免费看|
中文字幕人妻无码一夲道|
无码人妻精品丰满熟妇区|
四虎最新网址|
国产碰在79香蕉人人澡人人看喊|
亚洲国产成人无码电影|
波多野结衣在线播放|
日韩国产精品无码一区二区三区|
亚洲国产高清在线一区二区三区|
国产精品18久久久|
亚洲国产区男人本色在线观看|
99国产成人综合久久精品|
欧美亚洲日韩在线在线影院|
亚洲成aⅴ人片久青草影院|
国产无遮挡18禁无码网站|
国产成人精品高清在线观看99|
男人吃奶摸下挵进去啪啪软件|
国语自产偷拍精品视频偷拍|
国产亚洲3p无码一区二区|
亚洲熟妇少妇任你躁在线观看无码|
国产亚洲精品久久777777|
亚洲日韩穿丝袜在线推荐|
人妻熟女一区二区aⅴ水野朝阳|
国产成人片无码视频在线观看|
九九久久自然熟的香蕉图片|