資源描述:
《大數(shù)據(jù)結(jié)構(gòu)-實驗8查找地算法》由會員上傳分享,免費在線閱讀,更多相關(guān)內(nèi)容在工程資料-天天文庫。
1、標(biāo)準(zhǔn)文檔8.1實現(xiàn)順序查找的算法一,實驗?zāi)康?.熟悉掌握各種查找方法,深刻理解各種查找算法及其執(zhí)行的過程;2.學(xué)會分析各種查找算法的性能。二,實驗內(nèi)容8.1實現(xiàn)順序查找的算法編寫一個程序,輸出在順序表{3,6,2,10,1,8,5,7,4,9}中采用順序查找法查找關(guān)鍵字5的結(jié)果。8.2實現(xiàn)折半查找算法編寫一個程序,輸出在順序表{1,2,3,4,5,6,7,8,9,10}中采用折半查找方法查找關(guān)鍵字9的結(jié)果。要求:(1)用非遞歸方法;(2)用遞歸方法。8.3實現(xiàn)二叉排序樹的基本運算編寫一個程序?qū)崿F(xiàn)二叉排序樹的基本運算,并在此基礎(chǔ)上
2、完成如下功能:(1)由{4,9,0,1,8,6,3,5,2,7}創(chuàng)建一個二叉排序樹bt;(2)判斷bt是否為一棵二叉排序樹(提示:在遍歷過程中檢查是否符合二叉排序樹定義);(3)采用非遞歸方法查找關(guān)鍵字為6的結(jié)點,并輸出其查找路徑(提示:查找過程中保留經(jīng)過的結(jié)點信息,找到后順序輸出之)。8.4實現(xiàn)哈希表的相關(guān)運算編寫一個程序,實現(xiàn)哈希表的相關(guān)運算,并在此基礎(chǔ)上完成如下功能:(1)建立{16,74,60,43,54,90,46,31,29,88,77}哈希表A[0…12],哈希函數(shù)為H(k)=key%11,并采用線性探測法解決沖突
3、。輸出哈希表;(2)在上述哈希表中查找關(guān)鍵字為29的記錄;(3)在上述哈希表中刪除關(guān)鍵字為77的記錄,再將其插入,然后輸出哈希表。要求:輸出格式哈希地址:012………..12關(guān)鍵字值:……………………三,源代碼及結(jié)果截圖8.1//實現(xiàn)順序查找的算法#include#defineMAXL100//定義表中最多記錄個數(shù)typedefintKeyType;typedefintInfoType;typedefstruct{KeyTypekey;//KeyType為關(guān)鍵字的數(shù)據(jù)類型InfoTypedata;//其他數(shù)據(jù)}
4、NodeType;實用文案標(biāo)準(zhǔn)文檔typedefNodeTypeSeqList[MAXL];//順序表類型intSearch(SeqListR,intn,KeyTypek)//順序查找算法{inti=0;while(i=n)return-1;else{printf("%d",R[i].key);returni;}}voidmain(){SeqListR;intn=10;KeyTypek=5;InfoTypea[]={
5、3,6,2,10,1,8,5,7,4,9};inti;for(i=0;i#defineMAXL100//定義表中最多記錄個數(shù)typedefintKeyType;typedef
6、charInfoType[10];typedefstruct{KeyTypekey;//KeyType為關(guān)鍵字的數(shù)據(jù)類型InfoTypedata;//其他數(shù)據(jù)}NodeType;typedefNodeTypeSeqList[MAXL];//順序表類型intBinSearch1(SeqListR,intn,KeyTypek)//非遞歸二分查找算法{intlow=0,high=n-1,mid,count=0;while(low<=high){mid=(low+high)/2;printf("第%d次查找:在[%d,%d]中查找到元素
7、R[%d]:%d",++count,low,high,mid,R[mid].key);if(R[mid].key==k)//查找成功返回returnmid;if(R[mid].key>k)//繼續(xù)在R[low..mid-1]中查找high=mid-1;elselow=mid+1;//繼續(xù)在R[mid+1..high]中查找}return-1;}intBinSearch2(SeqListR,KeyTypek,intlow,inthigh,intcount)//遞歸二分查找算法{intmid;if(low<=high){mid=
8、(low+high)/2;printf("第%d次查找:在[%d,%d]中查找到元素R[%d]:%d",++count,low,high,mid,R[mid].key);if(R[mid].key==k)//查找成功返回returnmid;elseif(R[