已閱讀5頁,還剩44頁未讀, 繼續(xù)免費閱讀
版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進行舉報或認領
文檔簡介
課 程 設 計設計題目: 數(shù)據(jù)結(jié)構(gòu)及算法的設計與實現(xiàn) I課程設計(報告) 摘要摘 要 “數(shù)據(jù)結(jié)構(gòu)”是一門專業(yè)技術(shù)基礎課。它的教學要求是:學會分析研究計算機加工的數(shù)據(jù)結(jié)構(gòu)的特征,以便為應用涉及的數(shù)據(jù)選擇適當?shù)倪壿嫿Y(jié)構(gòu)、存儲結(jié)構(gòu)及其相應的算法,并初步掌握算法的時間分析和空間分析的技術(shù)。另一方面,本課程的學習過程也是復雜程序設計的訓練過程,要求學生編寫的程序結(jié)構(gòu)清楚和正確易讀,符合軟件工程的規(guī)范。在學習中,先要學習程序設計課程的目的掌握設計程序的思路,學習會用計算機語言編寫程序,以實現(xiàn)所需要處理的任務。要正確處理算法與語法的關(guān)系,算法是程序的核心、是靈魂,語法是外殼、是工具。不應把學習重.點放在語法規(guī)則上,語法是重要的,不掌握語法規(guī)則就無法編寫出正確的程序。一定要把重點放在解題的思路上,通過思考,和大量的閱讀,來構(gòu)造一個完整的程序。請記?。褐匾氖菍W會編程,而不是背語法。程序設計是為了鍛煉我們的實際動手能力,在一定程度上,又增加了我們的各方面的知識,特別是一些聯(lián)系實際的課程設計,它的完成需要自己平時積累的大量知識、并且需要勤于思考的能力和無限的激情。本次課設主要是學習程序設計的方法,進行程序設計的基本訓練,大多數(shù)的學生應該把精力放在最基本,最常用的內(nèi)容上,學好基本功。最后,感謝老師在我們程序設計的過程中辛勤的指導和不倦的教誨。關(guān)鍵詞 :線性表,棧和隊列,二叉樹,圖,查找,排序VII 目錄數(shù)據(jù)結(jié)構(gòu)及算法課程設計成績評定表I課程設計任務書.III摘 要.VII第一章 哈夫曼編譯碼器.11.1 問題分析.11.2 數(shù)據(jù)結(jié)構(gòu)與算法分析.11.3 核心代碼.31.4 運行結(jié)果8第二章 文章編輯101.1 問題分析.101.2 數(shù)據(jù)結(jié)構(gòu)與算法分析101.3 核心代碼121.4 運行結(jié)果17第三章 利用Hash技術(shù)統(tǒng)計C源程序中關(guān)鍵字的頻度.191.1 問題分析191.2 數(shù)據(jù)結(jié)構(gòu)與算法分析191.3 核心代碼211.4 運行結(jié)果32第四章 設計實現(xiàn)利用普里姆算法構(gòu)造最小生成樹的程序341.1 問題分析.341.2 數(shù)據(jù)結(jié)構(gòu)與算法分析.341.3 核心代碼.351.4 運行結(jié)果.39總 結(jié)40致 謝41參考文獻42沈陽工程學院課程設計(報告) 第二章 文章編輯第一章 哈夫曼編譯碼器當今社會,計算機技術(shù)和通信技術(shù)已不斷發(fā)展,處理和傳輸?shù)臄?shù)據(jù)量越來越龐大。如何采用有效的數(shù)據(jù)壓縮技術(shù)引起了人們的極大重視。從而產(chǎn)生了哈夫曼編碼,它是一種應用廣泛且非常有效的數(shù)據(jù)壓縮技術(shù),該技術(shù)一般可將數(shù)據(jù)壓縮20%至90%,通常我們將壓縮技術(shù)稱為編碼,解壓縮過程稱為解碼。樹狀結(jié)構(gòu)簡稱為樹,是一種以分支關(guān)系進行定義的層次結(jié)構(gòu),是十分重要的非線性數(shù)據(jù)結(jié)構(gòu),在計算機軟件設計方面,有著廣泛的應用。1.1 問題分析在程序的運行過程中,我們小組遇到了一些問題:不知該用哪種方法、按什么樣的順序查找各個結(jié)點。如何建立哈夫曼樹,怎樣能最簡單的通過主函數(shù)去逐步調(diào)用其他各個函數(shù)以達到題目的要求。如何利用建好的huffman樹生成huffman編碼及如何實現(xiàn)譯碼功能。通過查找資料我們解決了所有問題,構(gòu)造哈夫曼樹時,首先將由n各字符形成的n個葉子節(jié)點存放到數(shù)組HTNode的前n個分量中,然后根據(jù)前面介紹的哈夫曼方法的基本思想,不斷將兩個小子樹合并為一個較大的子樹,每次構(gòu)成的新子樹,每次構(gòu)成的新子樹的根節(jié)點順序放到HTNode數(shù)組中的前n個分量的后面。譯碼功能,假定電文中只使用A、B、C、D、E、F6種字符,若進行等長編碼,它們分別需要3位二進制字符,可一次編碼為000、001、010、011、100、101。1.2 數(shù)據(jù)結(jié)構(gòu)與算法設計哈夫曼編譯碼器的主要功能是先建立哈夫曼樹,然后利用建好的哈夫曼樹生成哈夫曼編碼后進行譯碼 。在數(shù)據(jù)通信中,經(jīng)常需要將傳送的文字轉(zhuǎn)換成由二進制字符0、1組成的二進制串,稱之為編碼。構(gòu)造一棵哈夫曼樹,規(guī)定哈夫曼樹中的左分之代表0,右分支代表1,則從根節(jié)點到每個葉子節(jié)點所經(jīng)過的路徑分支組成的0和1的序列便為該節(jié)點對應字符的編碼,稱之為哈夫曼編碼。最簡單的二進制編碼方式是等長編碼。若采用不等長編碼,讓出現(xiàn)頻率高的字符具有較短的編碼,讓出現(xiàn)頻率低的字符具有較長的編碼,這樣可能縮短傳送電文的總長度。哈夫曼樹課用于構(gòu)造使電文的編碼總長最短的編碼方案。其主要流程圖如圖1-1所示。開始結(jié)點數(shù)是否大于1將data和權(quán)值賦給ht輸出根結(jié)點和權(quán)值調(diào)用SELECT函數(shù)計算根結(jié)點函數(shù)父結(jié)點為兩子結(jié)點之和輸出兩子結(jié)點和已構(gòu)造的結(jié)點是否為根結(jié)點?左子是否為空?此時編碼為0I2*N?I+編碼為1結(jié)束否否否右子是否為空是是否否是是是圖1-1 哈夫曼樹編譯碼器流程圖1.3 核心代碼哈夫曼編譯碼器程序的主要代碼如下所示:#include #include /要用system函數(shù)要調(diào)用的頭文件#include /用getch()要調(diào)用的頭文件#include #define N 50 /義用N表示50葉節(jié)點數(shù)#define M 2*N-1 /用M表示節(jié)點總數(shù) 當葉節(jié)點數(shù)位n時總節(jié)點數(shù)為2n-1#define MAXSIZE 100typedef struct char data; /結(jié)點值 int weight; /權(quán)值 int parent; /雙親結(jié)點 int lchild; /左孩子結(jié)點 int rchild; /右孩子結(jié)點HTNode; typedef struct char cdN; /存放哈夫曼碼 int start; /從start開始讀cd中的哈夫曼碼HCode;void CreateHT(HTNode ht,int n) /調(diào)用輸入的數(shù)組ht,和節(jié)點數(shù)n int i,k,lnode,rnode; int min1,min2; for (i=0;i2*n-1;i+) hti.parent=hti.lchild=hti.rchild=-1; /所有結(jié)點的相關(guān)域置初值-1 for (i=n;i2*n-1;i+) /構(gòu)造哈夫曼樹 min1=min2=32767; /int的范圍是-3276832767 lnode=rnode=-1; /lnode和rnode記錄最小權(quán)值的兩個結(jié)點位置 for (k=0;k=i-1;k+) if (htk.parent=-1) /只在尚未構(gòu)造二叉樹的結(jié)點中查找 if (htk.weightmin1) /若權(quán)值小于最小的左節(jié)點的權(quán)值 min2=min1;rnode=lnode; min1=htk.weight;lnode=k; else if (htk.weightmin2) min2=htk.weight;rnode=k; htlnode.parent=i;htrnode.parent=i; /兩個最小節(jié)點的父節(jié)點是i hti.weight=htlnode.weight+htrnode.weight; /兩個最小節(jié)點的父節(jié)點權(quán)值為兩個最小節(jié)點權(quán)值之和 hti.lchild=lnode;hti.rchild=rnode; /父節(jié)點的左節(jié)點和右節(jié)點void CreateHCode(HTNode ht,HCode hcd,int n) int i,f,c; HCode hc; for (i=0;in;i+) /根據(jù)哈夫曼樹求哈夫曼編碼 hc.start=n;c=i; f=hti.parent; while (f!=-1) /循序直到樹根結(jié)點結(jié)束循環(huán) if (htf.lchild=c) /處理左孩子結(jié)點 hc.cdhc.start-=0; else /處理右孩子結(jié)點 hc.cdhc.start-=1; c=f;f=htf.parent; hc.start+; /start指向哈夫曼編碼hc.cd中最開始字符 hcdi=hc; void DispHCode(HTNode ht,HCode hcd,int n) /輸出哈夫曼編碼的列表 int i,k; printf( 輸出哈夫曼編碼:n); for (i=0;in;i+) /輸出data中的所有數(shù)據(jù),即A-Z printf( %c:t,hti.data); for (k=hcdi.start;k=n;k+) /輸出所有data中數(shù)據(jù)的編碼 printf(%c,hcdi.cdk); printf(n); void editHCode(HTNode ht,HCode hcd,int n) /編碼函數(shù)char stringMAXSIZE; int i,j,k;scanf(%s,string); /把要進行編碼的字符串存入string數(shù)組中printf(n輸出編碼結(jié)果:n);for (i=0;stringi!=#;i+) /#為終止標志for (j=0;jn;j+)if(stringi=htj.data) /循環(huán)查找與輸入字符相同的編號,相同的就輸出這個字符的編碼for (k=hcdj.start;k=n;k+) printf(%c,hcdj.cdk);break; /輸出完成后跳出當前for循環(huán)void deHCode(HTNode ht,HCode hcd,int n) /譯碼函數(shù)char codeMAXSIZE;int i,j,l,k,m,x;scanf(%s,code); /把要進行譯碼的字符串存入code數(shù)組中while(code0!=#)for (i=0;in;i+)m=0; /m為想同編碼個數(shù)的計數(shù)器 for (k=hcdi.start,j=0;k=n;k+,j+) /j為記錄所存儲這個字符的編碼個數(shù)if(codej=hcdi.cdk) /當有相同編碼時m值加1m+;if(m=j) /當輸入的字符串與所存儲的編碼字符串個數(shù)相等時則輸出這個的data數(shù)據(jù)printf(%c,hti.data);for(x=0;codex-1!=#;x+) /把已經(jīng)使用過的code數(shù)組里的字符串刪除codex=codex+j;void main() int n=26,i; char orz,back,flag=1; char str=A,B,C,D,E,F,G,H,I,J,K,L,M,N,O,P,Q,R,S,T,U,V,W,X,Y,Z; /初始化 int fnum=186,64,13,22,32,103,21,15,47,57,1,2,32,20,57,63,15,1,48,51,80,23,8,18,1,16; /初始化 HTNode htM; /建立結(jié)構(gòu)體 HCode hcdN; /建立結(jié)構(gòu)體 for (i=0;in;i+) /把初始化的數(shù)據(jù)存入ht結(jié)構(gòu)體中 hti.data=stri; hti.weight=fnumi; while (flag) /菜單函數(shù),當flag為0時跳出循環(huán) printf(n); printf( ); printf(n A-顯示編碼 ); printf(n B-進行編碼 ); printf(n C-進行譯碼 ); printf(n D-退出 n); printf( ); printf(n); printf( 請輸入選擇的編號:); scanf(%c,&orz); switch(orz) case a: case A: system(cls); /清屏函數(shù) CreateHT(ht,n); CreateHCode(ht,hcd,n); DispHCode(ht,hcd,n); printf(n按任意鍵返回.); getch(); system(cls); break; case b: case B: system(cls); printf(請輸入要進行編碼的字符串(以#結(jié)束):n); editHCode(ht,hcd,n); printf(n按任意鍵返回.); getch(); system(cls); break; case c: case C: system(cls); DispHCode(ht,hcd,n); printf(請輸入編碼(以#結(jié)束):n); deHCode(ht,hcd,n); printf(n按任意鍵返回.); getch(); system(cls); break; case d: case D: flag=0; break; default: system(cls); 1.4 運行結(jié)果下面是程序的運行結(jié)果:1. 第一步運行程序為進入主菜單,如下圖1-2所示。圖 1-2 主菜單界面2. 第二步輸入編號A顯示編碼,輸出結(jié)果如下圖1-3所示。圖1-3 輸出哈夫曼編碼界面3. 第三步返回主菜單后輸入B進行編碼,輸入“LeonLee#”回車后顯示編碼,界面如圖1-4所示。圖1-4 編碼界面4. 第四步返回主菜單后輸入C進行譯碼,輸入“01100101110001100111000#”,回車后顯示譯碼,界面如圖1-5所示。圖1-5 譯碼界面第二章 文章編輯文章編輯需要統(tǒng)計文章中的所有文字信息,需要分行顯示,處理起來雖然不是很復雜卻設計到很多方面,需要使用鏈表來存儲文章。2.1 問題分析功能:輸入一頁文字,程序可以統(tǒng)計出文字、數(shù)字、空格的個數(shù)。靜態(tài)存儲一頁文章,每行最多不超過80個字符,共N行;要求: 分別統(tǒng)計出其中英文字母數(shù)和空格數(shù)及整篇文章總字數(shù)。 統(tǒng)計某一字符串在文章中出現(xiàn)的次數(shù),并輸出該次數(shù)。 刪除某一子串,并將后面的字符前移。存儲結(jié)構(gòu)使用線性表,分別用幾個子函數(shù)實現(xiàn)相應的功能。輸入數(shù)據(jù)的形式和范圍:可以輸入大寫、小寫的英文字母、任何數(shù)字及標點符號。輸出形式: 分行輸出用戶輸入的各行字符。 分4行輸出“全部字母數(shù)”、“數(shù)字個數(shù)”、“空格個數(shù)”、“文章總字數(shù)”。 輸出刪除某一字符串后的文章。在編輯過程中,遇到的問題有對字符的統(tǒng)計過程中需要用ASCII碼,在自已開始直接用的是字母或者數(shù)字。不知道怎么結(jié)束文章輸入操作,最后在查找ASCII碼時發(fā)現(xiàn)可以用ASCII碼中的end控制符結(jié)束文章的輸入。2.2 數(shù)據(jù)結(jié)構(gòu)與算法設計文章編輯程序的主要功能是統(tǒng)計文章中的全部字母數(shù)、數(shù)字個數(shù)、空格個數(shù)和文章總字數(shù),并且能準確的查找、刪除字符串。主要應用的函數(shù)和語句有循環(huán),查找,刪除等。由程序開始運行后進行字符串的錄入,之后進行字符的輸出,然后是利用循環(huán)和查找,進行字符的統(tǒng)計并輸出已經(jīng)找到的字符(包括字母、數(shù)字、空格)出現(xiàn)的次數(shù)以及總共的字符數(shù)。在這些運行完之后,根據(jù)要求還有一項功能-刪除,對指定的字符進行刪除,同樣,這里也需應用到循環(huán),查找和刪除。其主要流程圖如圖2-1所示。是是是開始ID=1Create()ID=2output()ID=3Count()ID=4FindString()ID=5delstringword()ID=66輸出breakoutput ()否否是否否否main()輸出菜單輸入IDWhile(1)退出是圖 2-1 文章編輯流程圖2.3 核心代碼文章編輯程序代碼如下:#include#include#include#define LEN sizeof(struct line)typedef struct linechar *data; /文本每行以字符串形式存儲,行與行之間以鏈表存儲 struct line *next;LINE;/創(chuàng)建一鏈表,同時向里面輸入文本數(shù)據(jù)void Create(LINE * &head)char tmp100;LINE *p;p=(struct line *)malloc(LEN); /開辟一個LINE結(jié)構(gòu)體類型的空間,并把頭地址給p head=p; /將p賦給 表頭指針printf(請輸入文本,以Ctrl+E(E)為結(jié)尾,每行最多輸入80字符!n); /ASCII碼中第5個 end結(jié)束符 while(1) gets(tmp); /輸入字符串! if(strlen(tmp)80) printf(每行最多輸入80字符); break; if(tmp0=5) break; /如果一開始發(fā)現(xiàn)輸入 E,則退出輸入 p=p-next=(struct line *)malloc(LEN); /新的一行 重新開辟空間 p-data=(char *)malloc(strlen(tmp); /為結(jié)點分配空間 strcpy(p-data,tmp); if(tmpstrlen(tmp)-1=5) /除去最后一個控制符 E,并且退出 p-datastrlen(tmp)-1=0; break; p-next=NULL; /最后的一個指針為空。 head=head-next;/統(tǒng)計字母數(shù)int CountLetter(LINE * &head)LINE *p=head;int count=0;do int Len=strlen(p-data); /計算當前 data 里的數(shù)據(jù)元素的個數(shù) for(int i=0;idatai=a&p-dataidatai=A&p-datainext)!=NULL); /下一個節(jié)點不為空return count; /返回文章的字母總數(shù)/統(tǒng)計數(shù)字數(shù)int CountNumber(LINE * &head) LINE *p=head; int count=0; do int Len=strlen(p-data); /計算當前 data 里的數(shù)據(jù)元素的個數(shù) for(int i=0;idatai=48 & p-datainext)!=NULL); return count;/統(tǒng)計空格數(shù)int CountSpace(LINE * &head) LINE *p=head; int count=0; do int Len=strlen(p-data); /計算當前 data 里的數(shù)據(jù)元素的個數(shù) for(int i=0;idatai=32)count+; /根據(jù)空格的ASCII碼值計算個數(shù) while(p=p-next)!=NULL); return count;/統(tǒng)計文章的總字數(shù)int CountAll(LINE * &head) LINE *p=head; /保存鏈表的首地址 int count=0; do /計算總字符數(shù) count=count+strlen(p-data); while(p=p-next)!=NULL); /遍歷 鏈表 return count;/統(tǒng)計str在文章中出現(xiàn)的次數(shù)int FindString(LINE * &head,char *str) LINE *p=head; int count=0; int h=0; int len1=0; /保存當前行的總字符數(shù) int len2=strlen(str); /待統(tǒng)計字符串的長度 int i,j,k; do len1=strlen(p-data); /當前行的字符數(shù)for(i=0;idatai=str0)k=0; for(j=0;jdatai+j=strj) /與輸入的字符串進行比較相同的就k加1k+;if(k=len2) /若K與字符串的長度相等count+;i=i+k-1; /跳過找到的字符串繼續(xù)找 while(p=p-next)!=NULL); return count;/刪除指定的字符串void delstringword(char *s,char *str) / *s為輸入的字符串,*str為將要刪除的字符 char *p=strstr(s,str); /從字符串s中尋找str第一次出現(xiàn)的位置 char tmp80; int len=strlen(s); int i=len-strlen(p); int j=i+strlen(str); int count=0,m,n; for(m=0;mi;m+)tmpcount+=sm; /把刪除字符串的前面字符串給數(shù)組tmp for(n=j;ndata,str)!=NULL) /這一行中有匹配的字符串delstringword(p-data,str);while(p=p-next)!=NULL); /遍歷 鏈表/向屏幕輸出文章void OutPut(LINE * &head) LINE *p=head; do /按行輸出文章 printf(%sn,p-data); while(p=p-next)!=NULL); /下一個節(jié)點不為空,符合條件則輸出下一行/主函數(shù)int main()LINE *head;char str120,str220;int letter,number,space,all,countstr1;Create(head);printf(文章為:n);OutPut(head);letter=CountLetter(head);printf(n全部字母數(shù):%d,letter);number=CountNumber(head);printf(n數(shù)字個數(shù):%d,number);space=CountSpace(head);printf(n空格個數(shù): %d,space);all=CountAll(head);printf(n文章總字數(shù): %d,all);printf(n請輸入要統(tǒng)計的字符串:);scanf(%s,str1);countstr1=FindString(head,str1);printf(%s出現(xiàn)的次數(shù)為:%d,str1,countstr1);printf(n請輸入要刪除的某一字符串:);scanf(%s,str2);DelString(head,str2);printf(刪除%s后的文章為:n,str2);OutPut(head); printf(n謝謝使用!n);2.4 運行結(jié)果以下是文章編輯程序的運行結(jié)果:1. 第一步按提示輸入如下文章“everyone has a great dream in his heart,what we should do is that try our best.E”輸出統(tǒng)計的各種信息,輸出界面如圖2-2所示。圖2-2 輸入文章信息2. 第二步輸入要統(tǒng)計的特定字符串,如下圖2-3所示。圖2-3 統(tǒng)計特定字符串3. 第三步輸入要刪除的字符,回車后顯示刪除完指定字符的文章,顯示界面如圖2-4所示。圖2-4 刪除字符1沈陽工程學院課程設計(報告) 第四章 設計實現(xiàn)利用普利姆算法構(gòu)造最小生成樹的程序第三章 利用Hash技術(shù)統(tǒng)計C源程序中關(guān)鍵字的頻度隨著社會的發(fā)展,出現(xiàn)了減少沖突的一種散列函數(shù),它就是哈希函數(shù)。所謂的“哈希函數(shù)”就是表尚未被占用的地址,當插入的記錄所選地地址已被占用時,即轉(zhuǎn)而尋找其它尚未開發(fā)的地址。開放地址法又稱為散列表處理沖突的方法。散列表按結(jié)構(gòu)形式可分為散列表和閉散列表,所謂的閉散列表的結(jié)構(gòu)是一個向量,也是一維數(shù)組,表中記錄按關(guān)鍵字經(jīng)散列函數(shù)運算所得的地址直接存入數(shù)組中。3.1問題分析在這個程序設計中,我們小組遇到的不少的問題:1.我們小組決定不下要用哪種查詢方法。2.統(tǒng)計關(guān)鍵字發(fā)生的沖突的次數(shù),到底應該怎么來記數(shù),怎么樣解決沖突,最后我們用了開放地址的線型探測法來解決沖突。3.在插入哈希表之后應該怎樣重新來計算發(fā)生的沖突和頻數(shù)(頻度)。除留余數(shù)法式一種最簡單、最常用的構(gòu)造哈希函數(shù)方法,這種方法關(guān)鍵在于m的選擇,選定m值后就可以決定存儲地址的數(shù)目了,為了使哈希函數(shù)的取值盡可能“分散”一些,以減少沖突,m的選擇要適當。形成探查地址序列最簡單的方法是線性探測法,線性探測法的基本思想是沿著哈希表順序向后查探,直至找到開放地址為止,如到達表末端仍未找到開放地址,則將表看做是循環(huán)的,返回到表的首端再向后找,只要尚有開放地址最終總可以找到。3.2數(shù)據(jù)結(jié)構(gòu)與算法分析此哈希函數(shù)的主要功能是掃描一個C源程序,用Hash表存儲該程序中出現(xiàn)的關(guān)鍵字,并統(tǒng)計該程序中的關(guān)鍵字出現(xiàn)的頻度,用線性探測法解決Hash沖突。還查詢某指定關(guān)鍵字在Hash表中的情況,也能輸出Hash表,關(guān)鍵詞總數(shù),沖突次數(shù)。其主要流程圖如圖3-1所示。開始輸入orzWhile(orz)main()orz=A否是是Read(filename)否orz=BShow(i)1是否I=C是否Show(Findhx(word)I=D是2否breakbreakbreakGetKey()break輸出輸出輸出輸出12I=E是否輸出GetKey(KeyWordsi)I=F是breakbreak圖3-1 哈希表流程圖3.3 核心代碼哈希表主要程序代碼如下:#include #include #include #include #define TOTAL 39 /39個關(guān)鍵字#define MAXLEN 10 /關(guān)鍵字長度#define HASHLEN 41 /哈希表長度typedef struct /哈希表 結(jié)構(gòu)體 char keywordMAXLEN; /關(guān)鍵字int count; /記錄頻度int con; /記錄沖突次數(shù)HASH;/全局變量int cont=0; /統(tǒng)計關(guān)鍵詞個數(shù)char KeyWordsTOTALMAXLEN=asm,auto,break,case,cdecl,char, const,continue,default,do,double, else,enum,extern,far,float,for, goto,huge,if,int,interrupt,long, near,pascal,register,return,short, signed,sizeof,static,struct,switch, typedef,union,unsigned,void,volatile, while; /C語言中的39個關(guān)鍵字存入二維數(shù)組中HASH HSHASHLEN; /建立結(jié)構(gòu)體HS/函數(shù)聲明void Show(int key);int Read(char *filename); int isLetter(char ch);int isKeyWords(char *word);int FindHX(char *keyword);int CreatHX(char *keyword);int GetFreePos(int key);int GetKey(char *keyword);void main() char orz; int flag=1,i,count,key,has;char filename128,wordMAXLEN; while(flag) printf(ttA.讀取一個文件n); printf(ttB.輸出Hash表(關(guān)鍵字總數(shù),沖突次數(shù))n); printf(ttC.查詢某關(guān)鍵字在Hash表中的情況n); printf(ttD.顯示Hash表中的沖突關(guān)鍵字n); printf(ttE.顯示C語言關(guān)鍵字的Hash函數(shù)值(作為對照)n); printf(ttF.退出nn);printf(tt請輸入序號(A-F):); scanf(%c,&orz);switch(orz) case a:case A:system(cls); /清屏函數(shù) printf(請輸入要讀取的文件名(文件必須與程序在同一目錄下):); /比如輸入:a.cppscanf(%s,&filen
溫馨提示
- 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會有圖紙預覽,若沒有圖紙預覽就沒有圖紙。
- 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
- 5. 人人文庫網(wǎng)僅提供信息存儲空間,僅對用戶上傳內(nèi)容的表現(xiàn)方式做保護處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負責。
- 6. 下載文件中如有侵權(quán)或不適當內(nèi)容,請與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 2025年武漢車都建設投資有限公司招聘筆試參考題庫含答案解析
- 2025年度電子產(chǎn)品分期購買與售后服務合同
- 2025年度人事代理與員工薪酬福利調(diào)整服務協(xié)議3篇
- 2025年高新技術(shù)企業(yè)授權(quán)合同簽訂委托書規(guī)范3篇
- 2025版新能源汽車租賃與智能交通控制系統(tǒng)合作框架協(xié)議3篇
- 2025年全球及中國垂直旋轉(zhuǎn)模塊行業(yè)頭部企業(yè)市場占有率及排名調(diào)研報告
- 2025年全球及中國TGV玻璃芯基材行業(yè)頭部企業(yè)市場占有率及排名調(diào)研報告
- 2025版城市更新項目土地使用權(quán)作價出資合作協(xié)議3篇
- 二零二五年度成都市二手房交易合同范本 正版官方規(guī)范修訂3篇
- 二零二五年度車隊運輸保險合作協(xié)議3篇
- 小學六年級數(shù)學100道題解分數(shù)方程
- 部編版五年級語文下冊第七單元大單元教學設計
- 社區(qū)獲得性肺炎護理查房內(nèi)科
- 淺談提高中學生歷史學習興趣的策略
- 藥品儲存養(yǎng)護知識大全
- 新版藥品批發(fā)企業(yè)質(zhì)量管理體系文件大全
- 項目管理實施規(guī)劃-無錫萬象城
- 浙大一院之江院區(qū)就診指南
- 離婚協(xié)議書電子版下載
- 相似三角形判定專項練習30題(有答案)
- 2023學年完整公開課版mydreamjob作文教學
評論
0/150
提交評論