版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進(jìn)行舉報或認(rèn)領(lǐng)
文檔簡介
1、實驗五查找的應(yīng)用一、實驗?zāi)康模?、掌握各種查找方法及適用場合,并能在解決實際問題時靈活應(yīng)用。2、增強(qiáng)上機(jī)編程調(diào)試能力。二、問題描述分別利用順序查找和折半查找方法完成查找。有序表(3,4,5,7,24,30,42,54,63,72,87,95)輸入示例:請輸入查找元素:52輸出示例:順序查找:第一次比較元素95第二次比較元素87查找成功,i=*/查找失敗折半查找:第一次比較元素30第二次比較元素63 .利用序列(12,7,17,11,16,2,13,9,21,4)建立二叉排序樹,并完成指定元素的查 詢。輸入輸出示例同題1的要求。二數(shù)據(jù)結(jié)構(gòu)設(shè)計(選用的數(shù)據(jù)邏輯結(jié)構(gòu)和存儲結(jié)構(gòu)實現(xiàn)形式說明)(1)邏輯
2、結(jié)構(gòu)設(shè)計.順序查找和折.半查找采用線性表的結(jié)構(gòu).,二叉排序樹的查找則是建立一棵二叉樹,采用.的韭線性邏輯結(jié)構(gòu)。(2)存儲結(jié)構(gòu)設(shè)計采用順序存儲的一結(jié)構(gòu),開辟一一塊空間用于存放元素。typedef struct(int key;/關(guān)鍵字域 ElemType;typedef struct Elem( int key;Elem;typedef struct BSTNode(Elem data;/結(jié)點數(shù)據(jù)域BSTNode *lchild,*rchild; /左右孩子指針BSTNode,*BSTree;typedef struct( ElemType *R; int length;SSTable;(3)存
3、儲結(jié)構(gòu)形式說明分別建立查找關(guān)鍵字,順序表一數(shù)據(jù)和二叉樹一數(shù)據(jù)的結(jié)構(gòu)體進(jìn)行存儲數(shù)據(jù)四、算法設(shè)計(1)算法列表(說明各個函數(shù)的名稱,作用,完成什么操作)序號名稱函數(shù)表示符操作說明1順序查找Search_Seq在順序表中順序查找關(guān)鍵字的數(shù)據(jù)元素2折半查找Search_Bin在順序表中折半查找關(guān)鍵字的數(shù)據(jù)元素3初始化Init對順序表進(jìn)行初始化,并輸入元素4樹初始化CreateBST創(chuàng)建一棵二叉排序樹5插入InsertBST將輸入元素插入到二叉排序樹中6查找SearchBST在根指針?biāo)付媾判驑渲羞f歸查找關(guān)鍵字 數(shù)據(jù)元素各函數(shù)間調(diào)用關(guān)系(畫出函數(shù)之間調(diào)用關(guān)系)算法描述_.int Search_Seq(
4、SSTable ST, int key)在順序表ST中順序查找其關(guān)鍵字等于key的數(shù)據(jù)元素。若找到,則函數(shù)值為/該元素在表中的位置,否則為0int c=1,i;for (i=ST.length; i=0; -i)printf(第1 次比較元素 dn”,c+,ST.Ri-1.key);if (ST.Ri-1.key=key)/從后往前找return i;return 0;/ Search_Seq int Search_Bin(SSTable ST, int key)/在有序表ST中折半查找其關(guān)鍵字等于key的數(shù)據(jù)元素。若找到,則函數(shù)值為/該元素在表中的位置,否則為0int low=0,high=
5、ST.length,i=1;/置查找區(qū)間初值int mid; while(low=high) mid=(low+high) / 2; printf(第 %d 次比較元素 dn”,i+,ST.Rmid.key);if (key=ST.Rmid.key)return mid;/找到待查元素else if (keydata.key=e;T-lchild=NULL;T-rchild=NULL;else if (T-data.keye)InsertBST(T-lchild,e);elseInsertBST(T-rchild,e); /*二 叉排序樹的創(chuàng)建void CreateBST(BSTree &T
6、) /依次讀入一個關(guān)鍵字為key的結(jié)點,將此結(jié)點插入二叉排序樹T中 T=NULL;int e,i=1,max;printf(輸入的個數(shù)為:); scanf(%d”,&max);while (idata.key);if(!T)| key=T-data.key)return T;/查找結(jié)束else if(keydata.key) return SearchBST(T-lchild,key);/在左子樹中繼續(xù)查找elsereturn SearchBST(T-rchild,key);/在右子樹中繼續(xù)查找 五、調(diào)試記錄(調(diào)試過程中遇到的主要問題,是如何解決的,對設(shè)計和編碼的回顧討論和分析;改進(jìn)設(shè)想 等)
7、調(diào)試中出現(xiàn)了幾次程序查找失敗的情況,究其原因,是奇數(shù)個元素的時候,二分查找六、運行說明未定一義好,在后續(xù)改一進(jìn)之后,程序能實現(xiàn)預(yù)期一的效果(列出測試結(jié)果,包括輸入和輸出。這里的測試數(shù)據(jù)應(yīng)該完整和嚴(yán)格,最好多于示例中所列數(shù)據(jù))字零字字*牛宰字字* 在找 實 驗* *律律律* * *功能;.一順序、-X柱找2:分查找 1有序表3,4, 5.7. 24, 30,42, 54, 53. 72,87,96輸入順序表元素個數(shù):12依次輸無眥序喪元素3 4 5 7 24 SD 42 54 63 72 S7 95wwww*章章琳琳* 志衣點11 p f Kj 幣才k* * * 吊輸入查找元底 52第1次比較無
8、泰95第2次比校兀素87第3次比校兀素龍第4次比較兀索做第5次比較元素54第啾比較元素42第T次比較無知0第8次比敏元素飄第9次比校兀素了第10次比較兀案5第】1次比較兀素4第12次比校元素3第13次比較元素-33686019G存在r樣林樹林*林粹科.育序表的:分查找村林村* * *林本林林第1挾比較元素42第忘次比較兀素巧第3次比較元玄Mwj|序列(12.7,17,11,21, 4)建立:義排序楠,并完崩指定兀素的查制www 輸入的卒塹為:10地人革1個坎:12地匕簞4墳I 7蛔匕第個致,1;蛔入弟4 1、缺I 1蝠入蘋51致:16輸入第St致:3輸入第T個數(shù)* 13箍入弟8個就:澈入第紋:
9、幻地人蘋1U個故:4輸入查詢元素匚14弟斗次占詢I 12Ij&fXftHil: 17常&枚世詢:血弟丁株在可:13隹詢矢敗種串小功徒:1-序、:公宣找2- :Jk找以下附上源代碼:#include#include#includeint N;typedef struct(int key;/關(guān)鍵字域 ElemType;typedef struct Elem(int key;Elem;typedef struct BSTNode(Elem data;/結(jié)點數(shù)據(jù)域BSTNode *lchild,*rchild;/左右孩子指針BSTNode,*BSTree;typedef struct(ElemType
10、 *R;int length;SSTable;int Search_Seq(SSTable ST, int key)在順序表ST中順序查找其關(guān)鍵字等于key的數(shù)據(jù)元素。若找到,則函數(shù)值為/該元素在表中的位置,否則為0int c=1,i;for (i=ST.length; i=0; -i)printf(第1次比較元素 dn”,c+,ST.Ri-1.key);if (ST.Ri-1.key=key)/從后往前找return i;return 0;/ Search_Seqint Search_Bin(SSTable ST, int key) /在有序表ST中折半查找其關(guān)鍵字等于key的數(shù)據(jù)元素。若找
11、到,則函數(shù)值為 /該元素在表中的位置,否則為0int low=0,high=ST.length,i=1;/置查找區(qū)間初值int mid; while(low=high) mid=(low+high) / 2; printf(第 %d 次比較元素 dn”,i+,ST.Rmid.key);if (key=ST.Rmid.key) return mid;/找到待查元素else if (keydata.key=e;T-lchild=NULL;T-rchild=NULL;else if (T-data.keye)InsertBST(T-lchild,e);elseInsertBST(T-rchild,e
12、);/ *二叉排序樹的創(chuàng)建void CreateBST(BSTree &T )/依次讀入一個關(guān)鍵字為key的結(jié)點,將此結(jié)點插入二叉排序樹T中T=NULL;int e,i=1,max;printf(輸入的個數(shù)為:);scanf(%d”,&max);while (idata.key);if(!T)| key=T-data.key)return T;/查找結(jié)束else if(keydata.key)return SearchBST(T-lchild,key);/在左子樹中繼續(xù)查找else/在右子樹中繼續(xù)查找return SearchBST(T-rchild,key); void main()int
13、N=1;printf(* 查找實驗 *n);SSTable W; int t,i,a;while (1)printf(*功能:1-順序、二分查找2-二分查找n);scanf(%d”,&a);switch (a)case 1:Init(W);printf(* 有序表的順序查找 *n);printf(請輸入查找元素n);scanf(%d”,&t);if(i=Search_Seq(W, t)printf(位置在第 %dn”,i);elseprintf(不存在n);printf(* 有序表的二分查找 *n);if(i=Search_Bin(W,t)+1)printf(位置在第d位n,i);elsepr
溫馨提示
- 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
- 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
- 5. 人人文庫網(wǎng)僅提供信息存儲空間,僅對用戶上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負(fù)責(zé)。
- 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時也不承擔(dān)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 2025年分期付款運動器材合同
- 二零二五版智能交通系統(tǒng)工程合同終止及后續(xù)維護(hù)管理協(xié)議3篇
- 2024年環(huán)保產(chǎn)業(yè)發(fā)展項目投資合同
- 二零二五年度龍門吊拆除工程安全防護(hù)及應(yīng)急預(yù)案合同3篇
- 電纜購銷合同模板
- 商業(yè)合同模板
- 年度煙塵、粉塵自動采樣器及測定儀戰(zhàn)略市場規(guī)劃報告
- 房地產(chǎn)認(rèn)籌標(biāo)準(zhǔn)協(xié)議
- 2025年行政事業(yè)部門合同管理實施細(xì)則3篇
- 2025清潔外包服務(wù)合同
- 銀行信息安全保密培訓(xùn)
- 市政道路工程交通疏解施工方案
- 2024年部編版初中七年級上冊歷史:部分練習(xí)題含答案
- 拆遷評估機(jī)構(gòu)選定方案
- 床旁超聲監(jiān)測胃殘余量
- 上海市松江區(qū)市級名校2025屆數(shù)學(xué)高一上期末達(dá)標(biāo)檢測試題含解析
- 綜合實踐活動教案三上
- 《新能源汽車電氣設(shè)備構(gòu)造與維修》項目三 新能源汽車照明與信號系統(tǒng)檢修
- 2024年新課標(biāo)《義務(wù)教育數(shù)學(xué)課程標(biāo)準(zhǔn)》測試題(附含答案)
- 醫(yī)院培訓(xùn)課件:《靜脈中等長度導(dǎo)管臨床應(yīng)用專家共識》
- 中國國際大學(xué)生創(chuàng)新大賽與“挑戰(zhàn)杯”大學(xué)生創(chuàng)業(yè)計劃競賽(第十一章)大學(xué)生創(chuàng)新創(chuàng)業(yè)教程
評論
0/150
提交評論