資料結構課程設計 12月29日

2021-07-09 05:37:07 字數 3144 閱讀 2176

今天來說課設依舊處於沒有進展的狀態,自己也處於游離狀態。早上和班長在一起的時間還算是比較有趣的。

早上對昨天的**進行改進,然並卵。自己沒有掌握就是沒有掌握,沒有得到這個那個能力就是沒有得到。早上後半程也就放棄了。

下午就在網上找**,然後自己修改了下。//原**見 **這個

//呼叫有檔案以及定義常數值

#include "stdio.h"

#include "string.h"

#include "ctype.h"

#define maxlen 100

#define maxlen_1 1000

//自定義型別宣告

typedef struct

hfmtnode;

typedef hfmtnode hfmt[maxlen];

typedef struct

hfmcnode;

typedef hfmcnode hfmc[maxlen];

typedef struct

seqstack;

typedef struct

count;

count c[maxlen]=;

//檔案全域性變數外部宣告

extern int n; //多少個字元

extern int t=0; //多少個權值

//所有子函式宣告

void initializetree(hfmt t);

void countchar();

void inputtree(hfmt t);

void selectleast(hfmt t,int *p1,int *p2);

void createhfmt(hfmt t);

void push(char x);

void hfmc(hfmt t,int i);

void createhfmc(hfmt t,hfmc c);

void initialization(hfmt t,hfmc c);

void codeing(hfmc c);

void decodeing(hfmc c);

void showcodefile();

void showdecodefile();

seqstack s;

int main()

//初始化樹

void initializetree(hfmt t)

fseek(fp,0,seek_end);

n=ftell(fp);

for(i=0;i<2*n-1;i++) }

void countchar()

for (int j=0;j<=i;j++)

}//權值放在乙個陣列中,然而現在權值放在了charrr.x中

while (c[k]->ch!=0) }

void inputtree(hfmt t)

}//從樹陣列中選取權值最小的兩個元素

void selectleast(hfmt t,int *p1,int *p2)

} for(i=0;i<2*n-1;i++) }

}//構建哈夫曼樹

void createhfmt(hfmt t)

}//入棧

void push(char x)

//構建哈夫曼樹編碼庫遞迴呼叫函式

void hfmc(hfmt t,int i)

}//構建哈夫曼樹編碼庫

void createhfmc(hfmt t,hfmc c)

c->code[j]='\0'; }}

//初始化函式

void initialization(hfmt t,hfmc c)

else

fclose(out);

printf("\n初始化完畢!");

}//編碼函式

void codeing(hfmc c)

zw='\0';

} else

fclose(in);

//進行編碼

for(i=0;zw!='\0';i++)

error=0;//若編碼庫存在匹配字元,則錯誤為假

break;

}} if(error==1)

break;

} code[c_len]='\0';

if(error)

else

fclose(out); }}

//解碼函式

void decodeing(hfmc c)

else

fclose(in);

//求編碼正文長度c_len

for(i=0;code!='\0';i++);

c_len=i;

if(c_len==0)

error=1;//錯誤情況1

//求編碼庫最長編碼長度c_max

c_max=0;

for(i=0;icode)==0)

}//若找到編碼庫里匹配的編碼,則結束迴圈

if(flag)

//未找到則將當前長度減一,繼續尋找

if(dq_len<1)

error=1;//解碼錯誤情況2

} dq=dq+dq_len;//編碼正文當前讀取位置改變

} zw[k]='\0';//在zw陣列的最後乙個位置新增字串結束符

if(error)

else

fclose(out); }}

//顯示編碼檔案內容函式

void showcodefile()

else

fclose(in);

//列印內容

printf("\n**檔案內容為:");

for(i=0;code!='\0';i++) }

void showdecodefile()

else

fclose(in);

//列印內容

printf("\n**檔案內容為:");

for(i=0;code!='\0';i++)

}

然後上面這個現在唯一的問題就是:

文字檔案裡面字元的統計,權值問題。

其它我感覺已經沒有問題了。

感覺自己真的路選的......

就這樣吧

資料結構課程設計

資料結構課程設計 include define n 30 include include includeusing namespace std struct node typedef node phone,mingzi node hashnumble node hashname int hash1 ...

資料結構課程設計

小明是乙個計算機專業top student 祝賀他畢業了。並準備到銀行參加工作。上班第一天,經理叫他編制乙個實現乙個活期儲蓄處理程式,算作考查。上班第一天,一定要給領導乙個好印象,小明二話沒說,就答應了。現要你是小明了,請完成如下題目功能。儲戶開戶 銷戶 存入 支出活動頻繁,系統設計要求 1 能比較...

資料結構課程設計

一 實訓目的 通過課程設計,學會運用資料結構知識,針對具體應用,自己設計合理資料結構,確定儲存結構,並能設計具體操作演算法,選擇使用具體語言進行實現。掌握c 較複雜程式的組織和設計過程,除錯技巧。學習解決實際問題的能力。題目1.小明是乙個計算機專業top student,祝賀他畢業了。並準備到銀行參...