91av视频/亚洲h视频/操亚洲美女/外国一级黄色毛片 - 国产三级三级三级三级

資源簡介

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

資源截圖

代碼片段和文件信息

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

#define?TOTAL?39???????????????//39個關鍵字
#define?MAXLEN?10??????????????//關鍵字長度
#define?HASHLEN?41?????????????//哈希表長度

typedef?struct?????????????//哈希表?結構體???
{
char?keyword[MAXLEN];?????//關鍵字
int?count;?????????????//記錄頻度
int?con;???????????????//記錄沖突次數
}HASH;

//全局變量
int?cont=0;???????????????//統計關鍵詞個數
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““long“
???“near““pascal““register““return““short“
???“signed““sizeof““static““struct““switch“
???“typedef““union““unsigned““void““volatile“
???????????????????????????????“while“};????????????????//C語言中的39個關鍵字存入二維數組中
HASH?HS[HASHLEN];??????//建立結構體HS

//函數聲明
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表(關鍵字總數,沖突次數)\n“);
????printf(“\t\tC.查詢某關鍵字在Hash表中的情況\n“);
????printf(“\t\tD.顯示Hash表中的沖突關鍵字\n“);
????printf(“\t\tE.顯示C語言關鍵字的Hash函數值(作為對照)\n“);
????printf(“\t\tF.退出\n\n“);
printf(“\t\t請輸入序號(A--F):“);
????????scanf(“%c“&orz);
switch(orz)
{
????case?‘a‘:
case?‘A‘:
system(“cls“);?????????????????????????//清屏函數
????????????????printf(“請輸入要讀取的文件名(文件必須與程序在同一目錄下):“);????//比如輸入:a.cpp
scanf(“%s“&filename);
Read(filename);
????printf(“\n按任意鍵返回...“);
????getch();
????system(“cls“);
break;
????case?‘b‘:
case?‘B‘:
getchar();
system(“cls“);
printf(“每次顯示5行,請按回車鍵繼續!\n“);
for(i=0;i {
?? ????Show(i);?
????if((i+1)%5==0)
getchar();??//為了清晰,每次顯示5行
}
????printf(“關鍵字總數為:?%d\n“cont);
????printf(“\n按任意鍵返回...“);
????getch();
????system(“cls“);
????break;
????case?‘c‘:
case?‘C‘:
system(“cls“);
printf(“請輸入你想要查找的關鍵字:?“);
????scanf(“%s“&word);
????printf(“\n“);
????Show(FindHX(word));
printf(“\n按任意鍵返回...“);
????getch();
????system(“cls“);
????break;
????case?‘d‘:
case?‘D‘:
system(“cls“);
????printf(“\t沖突關鍵字列表\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關鍵字:%s“HS[i].keyword);
????printf(“\t哈希表當前位置:%d“i);
????printf(“\t沖突次數:%d\n“HS[i].con);
}
}
}
????if(count==0)?
????printf(“沒有沖突\n“);
????else
? ????????printf(“\n\t\t\t沖突關鍵字

評論

共有 條評論