freepeople性欧美熟妇, 色戒完整版无删减158分钟hd, 无码精品国产vα在线观看DVD, 丰满少妇伦精品无码专区在线观看,艾栗栗与纹身男宾馆3p50分钟,国产AV片在线观看,黑人与美女高潮,18岁女RAPPERDISSSUBS,国产手机在机看影片

正文內(nèi)容

課程設計(數(shù)據(jù)結(jié)構(gòu))(編輯修改稿)

2024-10-17 09:03 本頁面
 

【文章內(nèi)容簡介】 )編碼:利用建好的哈夫曼樹生成哈夫曼編碼;4)輸出編碼(首先實現(xiàn)屏幕輸出,然后實現(xiàn)文件輸出); 5)界面優(yōu)化設計。代碼如下:include include include include define N 200typedef struct HTNode//結(jié)構(gòu)體 { int Weight。char ch。int Parent,Lchild,Rchild。}HTNode。typedef char * * HCode。void Save(int n,HTNode *HT)//把權(quán)值保存到文件 {FILE * fp。int i。if((fp=fopen(“”,“wb”))==NULL){printf(“cannot open filen”)。return。}for(i=0。iif(fwrite(amp。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。kif(k{printf(“n請輸入權(quán)值和字符(用空格隔開): ”)。scanf(“%d”,amp。w)。scanf(“ %c”,amp。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。kp1=0。p2=0。w1=32767。w2=32767。for(j=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)//對結(jié)點進行譯碼 { int k,sp,fp,p。char *cd。HCode HC。HC=(HCode)malloc((n+1)*sizeof(char *))。cd=(char *)malloc(n*sizeof(char))。cd[n1]=39。39。printf(“************************n”)。printf(“Char Codingn”)。for(k=1。k{sp=n1。p=k。fp=HT[k].Parent。for(。fp!=0。p=fp,fp=HT[fp].Parent)if(HT[fp].Lchild==p)cd[sp]=39。039。elsecd[sp]=39。139。HC[k]=(char *)malloc((nsp)*sizeof(char))。strcpy(HC[k],amp。cd[sp])。printf(“%c%sn”,HT[k].ch,HC[k])。}printf(“************************n”)。free(cd)。} void Read(int n,HTNode *HT)//從文件中讀出數(shù)據(jù) {int i。FILE * fp。if((fp=fopen(“”,“rb”))==NULL){printf(“cannot open filen”)。exit(0)。} for(i=0。ifread(amp。HT[i].Weight,sizeof(struct HTNode),1,fp)。// printf(“%d n”,HT[i].Weight)。} Coding_H(n,HT)。fclose(fp)。}void Print_H(int m,HTNode *HT)//輸出赫夫曼造樹過程 { int k。printf(“************************n”)。printf(“Num WeightPar LCh RCh n”)。for(k=1。kprintf(“%d ”,k)。printf(“%d”,HT[k].Weight)。printf(“%d”,HT[k].Parent)。printf(“%d”,HT[k].Lchild)。printf(“%dn”,HT[k].Rchild)。} printf(“************************n”)。}void Decode(int m,HTNode *HT)//對輸入的電文進行譯碼 { int i,j=0。char a[10]。char endflag=39。239。i=m。printf(“輸入發(fā)送的編碼,以‘2’結(jié)束:”)。scanf(“%s”,amp。a)。printf(“譯碼后的字符:”)。while(a[j]!=39。239。){if(a[j]==39。039。)i=HT[i].Lchild。else i=HT[i].Rchild。if(HT[i].Lchild==0)//HT[i]是葉結(jié)點{printf(“%c”,HT[i].ch)。i=m。//回到根結(jié)點}j++。} printf(“n”)。if(HT[i].Lchild!=0amp。amp。a[j]!=39。239。)printf(“ERROR”)。}int main()//主函數(shù) { int n,m,c。HTNode HT[N]。do {system(“color 2f”)。//(“nntt*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=ntt”)。printf(“nttt 赫夫曼編譯碼系統(tǒng) ttt”)。printf(“nntt*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=ntt”)。printf(“、”)。printf(“”)。printf(“nnttt請選擇:”)。scanf(“%d”,amp。c)。switch(c){case 1:system(“cls”)。printf(“輸入多少結(jié)點:”)。scanf(“%d”,amp。n)。m=2*n1。Create_H(n,m,HT)。break。case 2:system(“cls”)。Save(n,HT)。break。case 3:system(“cls”)。Print_H(m,HT)。break。case 4:system(“cls”)。Coding_H(n,HT)。break。case 5:system(“cls”)。Decode(m,HT)。break。case 6:system(“cls”)。Read(n,HT)。break。case 7:system(“cls”)。exit(0)。}}while(1)。return 0。}運行界面如下:(鏈表實現(xiàn))要求:實現(xiàn)如下功能:增加、查找、刪除、輸出、退出。代碼如下:include include include typedef struct score//定義成績信息結(jié)構(gòu)體 {char Number[20]。char Name[20]。char Chinese[20]。char English[20]。char Math[20]。}score。typedef struct node_score//定義成績信息鏈表結(jié)點,包括數(shù)據(jù)域和指針域 {score data。struct node_score *next。}node_score,*p_node_score。p_node_score headScore。//定義鏈表的頭指針為全局變量 void PrintScore(score s)//輸出信息函數(shù) { printf(“ %10s”,)。printf(“ |%6s”,)。printf(“|%3s”,)。printf(“|%3s”,)。printf(“ |%3sn”,)。} void View()//輸出函數(shù) {p_node_score pNodeScore。pNodeScore=headScore。printf(“學號|姓名| 語文成績| 英語成績| 高數(shù)成績n”)。while(pNodeScore!= NULL){PrintScore(pNodeScoredata)。//輸出學生信息和成績信息pNodeScore=pNodeScorenext。} } void Add(){p_node_score pNodeScore。// 定義一個節(jié)點pNodeScore=(p_node_score)malloc(sizeof(node_score))。//為節(jié)點分配存儲空間printf(“請輸入學號:”)。scanf(“%s”,pNodeScore)。printf(“請輸入姓名:”)。scanf(“%s”,pNodeScore)。printf(“請輸入語文成績:”)。scanf(“%s”,pNodeScore)。printf(“請輸入英語成績:”)。scanf(“%s”,pNodeScore)。printf(“請輸入高數(shù)成績:”)。scanf(“%s”,pNodeScore)。if(headScore==NULL){ //如果頭結(jié)點為空headScore=pNodeScore。pNodeScorenext=NULL。} else{ //如果頭結(jié)點不為空pNodeScorenext=headScore。headScore=pNodeScore。//將頭結(jié)點新結(jié)點} } void Input(){ int n,i。printf(“輸入幾個學生的數(shù)據(jù):”)。scanf(“%d”,amp。n)。for(i=0。iAdd()。printf(“輸入成功!”)。} int Delete(){ p_node_score pNodeScore,p1。//p1為pNodeScore的前驅(qū)p1=headScore。if(p1==NULL){printf(“成績表中沒有數(shù)據(jù)!請先添加數(shù)據(jù)!n”)。return 0。} char DeleteNumber[20]。printf(“請數(shù)入要刪除的學生學號:”)。scanf(“%s”,DeleteNumber)。if(strcmp(p1,DeleteNumber)==0){ //如果要刪除的結(jié)點在第一個headScore=p1next。pNodeScore=p1。printf(“學號為%s的學生信息已經(jīng)刪除!n”,DeleteNumber)。return 0。} else{pNodeScore=p1next。while(pNodeScore!=NULL){if(strcmp(pNodeScore,DeleteNumber)==0){p1next=pNodeScorenext。prin
點擊復制文檔內(nèi)容
環(huán)評公示相關(guān)推薦
文庫吧 www.dybbs8.com
備案圖片鄂ICP備17016276號-1