xxxx18一60岁hd中国/日韩女同互慰一区二区/西西人体扒开双腿无遮挡/日韩欧美黄色一级片 - 色护士精品影院www

資源簡介

數(shù)據(jù)結(jié)構(gòu)課程設(shè)計,用C語言寫的 一、任務(wù)描述 掃描一個C源程序,用Hash表存儲該程序中出現(xiàn)的關(guān)鍵字,并統(tǒng)計該程序中的關(guān)鍵字出現(xiàn)的度。用線性探測法解決Hash沖突。設(shè)Hash函數(shù)為:Hash(Key)=[(Key的首字母序號)*100+(Key的尾字母序號)] Mod 41。關(guān)鍵字39個,參考C語言教材。 二、數(shù)據(jù)結(jié)構(gòu)設(shè)計 ①關(guān)鍵字表的存儲結(jié)構(gòu);②Hash表中的結(jié)點(diǎn)結(jié)構(gòu)。頻度、沖突次數(shù) 三、功能設(shè)計 ①從一個大字符串中分解單詞 ②識別是否是關(guān)鍵詞;用哪種方法:有序表查找、二叉查找樹? ③Hash函數(shù),解決沖突,統(tǒng)計沖突次數(shù)。key => 地址 ④插入Hash表,或調(diào)整Hash表項中的頻度 ⑤輸出Hash表,關(guān)鍵詞總數(shù),沖突次數(shù)

資源截圖

代碼片段和文件信息

#include?
#include?
#include?
#include?

#define?TOTAL?39???????????????//39個關(guān)鍵字
#define?MAXLEN?10??????????????//關(guān)鍵字長度
#define?HASHLEN?41?????????????//哈希表長度

typedef?struct?????????????//哈希表?結(jié)構(gòu)體???
{
char?keyword[MAXLEN];?????//關(guān)鍵字
int?count;?????????????//記錄頻度
int?con;???????????????//記錄沖突次數(shù)
}HASH;

//全局變量
int?cont=0;???????????????//統(tǒng)計關(guān)鍵詞個數(shù)
char?KeyWords[TOTAL][MAXLEN]={“asm““auto““break““case““cdecl““char“
???????????????????????????????“const““continue““default““do““double“
???“else““enum““extern““far““float““for“
???“goto““huge““if““int““interrupt““l(fā)ong“
???“near““pascal““register““return““short“
???“signed““sizeof““static““struct““switch“
???“typedef““union““unsigned““void““volatile“
???????????????????????????????“while“};????????????????//C語言中的39個關(guān)鍵字存入二維數(shù)組中
HASH?HS[HASHLEN];??????//建立結(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=1icountkeyhas;
char?filename[128]word[MAXLEN];
????while(flag)
{
? ????printf(“\t\tA.讀取一個文件\n“);
????printf(“\t\tB.輸出Hash表(關(guān)鍵字總數(shù),沖突次數(shù))\n“);
????printf(“\t\tC.查詢某關(guān)鍵字在Hash表中的情況\n“);
????printf(“\t\tD.顯示Hash表中的沖突關(guān)鍵字\n“);
????printf(“\t\tE.顯示C語言關(guān)鍵字的Hash函數(shù)值(作為對照)\n“);
????printf(“\t\tF.退出\n\n“);
printf(“\t\t請輸入序號(A--F):“);
????????scanf(“%c“&orz);
switch(orz)
{
????case?‘a(chǎn)‘:
case?‘A‘:
system(“cls“);?????????????????????????//清屏函數(shù)
????????????????printf(“請輸入要讀取的文件名(文件必須與程序在同一目錄下):“);????//比如輸入:a.cpp
scanf(“%s“&filename);
Read(filename);
????printf(“\n按任意鍵返回...“);
????getch();
????system(“cls“);
break;
????case?‘b‘:
case?‘B‘:
getchar();
system(“cls“);
printf(“每次顯示5行,請按回車鍵繼續(xù)!\n“);
for(i=0;i {
?? ????Show(i);?
????if((i+1)%5==0)
getchar();??//為了清晰,每次顯示5行
}
????printf(“關(guān)鍵字總數(shù)為:?%d\n“cont);
????printf(“\n按任意鍵返回...“);
????getch();
????system(“cls“);
????break;
????case?‘c‘:
case?‘C‘:
system(“cls“);
printf(“請輸入你想要查找的關(guān)鍵字:?“);
????scanf(“%s“&word);
????printf(“\n“);
????Show(FindHX(word));
printf(“\n按任意鍵返回...“);
????getch();
????system(“cls“);
????break;
????case?‘d‘:
case?‘D‘:
system(“cls“);
????printf(“\t沖突關(guān)鍵字列表\n\n“);
????count=0;
????for(i=0;i {
????if(strlen(HS[i].keyword)>0)
{
????key=GetKey(HS[i].keyword);
????if(key!=i)
{
????count++;
????printf(“\t關(guān)鍵字:%s“HS[i].keyword);
????printf(“\t哈希表當(dāng)前位置:%d“i);
????printf(“\t沖突次數(shù):%d\n“HS[i].con);
}
}
}
????if(count==0)?
????printf(“沒有沖突\n“);
????else
? ????????printf(“\n\t\t\t沖突關(guān)鍵字

評論

共有 條評論

相關(guān)資源