版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進(jìn)行舉報或認(rèn)領(lǐng)
文檔簡介
1、實(shí)用文檔中南大學(xué)數(shù)據(jù)結(jié)構(gòu)實(shí)驗(yàn)報告實(shí)驗(yàn)題目:(1)單鏈表的實(shí)現(xiàn)(2)棧和隊列(3)二叉樹的遍歷(4)查找與排序?qū)W生姓名:代巍學(xué)生學(xué)號:0909121615指導(dǎo)老師:余臘生所在學(xué)院:信息科學(xué)與工程學(xué)院專業(yè)班級:信息安全1201班指導(dǎo)教師評定!:簽名:實(shí)驗(yàn)一 單鏈表的實(shí)現(xiàn)一、實(shí)驗(yàn)?zāi)康牧私饩€性表的邏輯結(jié)構(gòu)和各種存儲表示方法, 以及定義在邏輯結(jié)構(gòu)上的各種基本運(yùn)算及其在某種存儲結(jié)構(gòu)上如何實(shí)現(xiàn)這些基本運(yùn)算。 在熟悉上述內(nèi)容的 基礎(chǔ)上,能夠針對具體應(yīng)用問題的要求和性質(zhì), 選擇合適的存儲結(jié)構(gòu)設(shè)計出相應(yīng) 的有效算法,解決與線性表相關(guān)的實(shí)際問題二、實(shí)驗(yàn)內(nèi)容用C/C+語言編寫程序,完成以下功能:(1)運(yùn)行時輸入數(shù)據(jù),
2、創(chuàng)建一個單鏈表(2)可在單鏈表的任意位置插入新結(jié)點(diǎn)(3)可刪除單鏈表的任意一個結(jié)點(diǎn)(4)在單鏈表中查找結(jié)點(diǎn)(5)輸出單鏈表三、程序設(shè)計的基本思想,原理和算法描述 :(包括程序的結(jié)構(gòu),數(shù)據(jù)結(jié)構(gòu),輸入 /輸出設(shè)計,符號名說明等)用一組地址任意的存儲單元存放線性表中的數(shù)據(jù)元素。以元素 ( 數(shù)據(jù)元素的映象 ) + 指針( 指示后繼元素存儲位置 ) = 結(jié)點(diǎn)( 表示數(shù)據(jù)元 素 或 數(shù)據(jù)元素的映象 )以“結(jié)點(diǎn)的序列”表示線性表稱作線性鏈表(單鏈表)單鏈表是指數(shù)據(jù)接點(diǎn)是單向排列的。 一個單鏈表結(jié)點(diǎn), 其結(jié)構(gòu)類型分為兩部 分:(1)、數(shù)據(jù)域:用來存儲本身數(shù)據(jù)。(2)、鏈域或稱為指針域: 用來存儲下一個結(jié)點(diǎn)地址
3、或者說指向其直接后 繼的指針。1、單鏈表的查找對單鏈表進(jìn)行查找的思路為: 對單鏈表的結(jié)點(diǎn)依次掃描, 檢測其數(shù)據(jù)域是否 是我們所要查好的值,若是返回該結(jié)點(diǎn)的指針,否則返回NULL。2、單鏈表的插入因?yàn)樵趩捂湵淼逆溣蛑邪撕罄^結(jié)點(diǎn)的存儲地址, 所以當(dāng)我們實(shí)現(xiàn)的時候, 只要知道該單鏈表的頭指針,即可依次對每個結(jié)點(diǎn)的數(shù)據(jù)域進(jìn)行檢測。假設(shè)在一個單鏈表中存在2個連續(xù)結(jié)點(diǎn)p、q (其中p為q的直接前驅(qū)),若 我們需要在p、q之間插入一個新結(jié)點(diǎn)s,那么我們必須先為s分配空間并賦值, 然后使p的鏈域存儲s的地址,s的鏈域存儲q的地址即可。(p- link=s;s- link=q) ,這樣就完成了插入操作。3、
4、單鏈表的刪除刪除運(yùn)算思想方法刪除運(yùn)算是將表的第 i 個結(jié)點(diǎn)刪去。具體步驟:找 到i-1的存儲位置p令p-next指向i的直接后繼結(jié)點(diǎn)釋放結(jié)點(diǎn)i的空間,將其歸還給 存儲池 。四、源程序及注釋#include #include #include #include #include #define ElemType int/ 鏈表類型typedef struct LNodeElemType data;struct LNode *next; LNode, *LinkList;int EmptyList(LinkList &L) if(L-next=NULL) return 0;elsereturn 1
5、;/ 手動建立一個帶頭結(jié)點(diǎn)的線性鏈表 L void SCreateList_L(LinkList &L) LinkList l,p;int i;ElemType d;l=(LinkList) malloc(sizeof(LNode);L=(LinkList) malloc(sizeof(LNode); /l=L;L-next=NULL;coutd;if(d!=0)p=(LinkList) malloc(sizeof(LNode); / p-data=d;p-next=l-next;l-next=p;l=l-next;else break;if(EmptyList(L) cout 生成鏈表成功!
6、 else cout 鏈表為空,未生成! ! ; cin.get();cin.get(); /SCreate_L生成頭結(jié)點(diǎn)next=NULL;srand(unsigned)time(NULL);for(int i=n;i0;-i)p=(LinkList) malloc(sizeof(LNode); /生成新結(jié)點(diǎn)p-data=(rand()%100+1); p-next=l-next;l-next=p;l=l-next; cout 生成鏈表成功! ! ;cin.get();cin.get(); /ZCreate_L/ 建立一個帶頭結(jié)點(diǎn)的線性鏈表LinkList CreateList_L() ch
7、ar c;int n;LinkList L;cout* 建立線性鏈表*endl;cout1. 手動建立 endl;cout2. 自動建立 endl;cout|*|c;if(c=1) SCreateList_L(L);else if(c=2) coutn;ZCreateList_L(L,n);else cout 輸入錯誤,請重新輸入 :next;int i=0;while (p)+i;p=p-next;return i;cin.get();cin.get(); /LengthList/在線性鏈表L中第i個結(jié)點(diǎn)之前插入新的數(shù)據(jù)元素evoid ListInsert_L(LinkList &L)int
8、 i;ElemType e;couti;while(iLengthList(L)couti;LinkList p,s;p=L;int j=0;while(p & jnext;+j;if(!p | ji-1) cout輸入錯誤! cin.get();cin.get();else coute;s=(LinkList) malloc(sizeof(LNode); s-data=e;s-next=p-next;p-next=s;cout 插入成功! ;cin.get();cin.get(); /ListInsert_L/ 刪除線性鏈表 L 中的第 i 個結(jié)點(diǎn)void ListDelete_L(Link
9、List &L)int i;ElemType e;couti;while(iLengthList(L)couti;LinkList p,q;p=L; int j=0;q=(LinkList) malloc(sizeof(LNode);while (p-next & jnext;+j; / 尋找第 i 個結(jié)點(diǎn)if(!(p-next) | ji-1) coutnext;p-next=q-next;e=q-data;cout 刪除成功! endl 刪除的結(jié)點(diǎn)值為: next; cout 所有數(shù)據(jù)如下所示: endl;while (p)coutdatanext;cin.get();cin.get();
10、 /PrintListvoid SearchList(LinkList &L)/ 查找某一結(jié)點(diǎn),顯示其位置int i=0;ElemType n;coutn;if(L=NULL) coutnext;while (p-data!=n & p-next!=NULL) p=p-next; i=i+1;if(p-data=n) cout 找到了對應(yīng)的結(jié)點(diǎn),在鏈表的第 i+1 位上! ; else coutnext;free(p);L=NULL;cout 線性鏈表 L 已銷毀 !endl;/DestroyListint menu_select() / 選擇函數(shù)char *m7= 1. 建立線性鏈表 ,2.
11、 某一結(jié)點(diǎn)前插入一個結(jié)點(diǎn) ,3. 刪除一個結(jié)點(diǎn) ,4. 計算結(jié)點(diǎn)個數(shù)并輸出 ,5. 查找并顯示某一結(jié)點(diǎn)位置 ,6. 輸出所有節(jié)點(diǎn) ,0. 退出系統(tǒng) ;int i;char c1;dosystem(cls);/* 清屏 */coutnn= 鏈表的基本操作 =nn; for(i=0;i7;i+)coutmiendl; coutn=n; coutc1;while(c16);return(c1-0);void main()LinkList L=NULL;for( ; ; )switch(menu_select()case 1:L=CreateList_L(); system(pause); break
12、;case 2:if(L!=NULL) ListInsert_L(L);else cout 鏈表為空,請先建鏈表! ! cin.get();cin.get();break;system(pause); break;case 3:if(L!=NULL) ListDelete_L(L);else cout 鏈表為空,請先建鏈表! ! cin.get();cin.get();break;system(pause);break;case 4:i;if(L!=NULL) int i=LengthList(L);cout 結(jié)點(diǎn)的個數(shù)為: cin.get();cin.get();else cout 鏈表為空
13、,請先建鏈表! ! ;cin.get();cin.get();break;system(pause);break;case 5:if(L!=NULL) SearchList(L);else cout 鏈表為空,請先建鏈表! ! ;cin.get();cin.get();break;system(pause);break;case 6:if(L!=NULL) PrintList(L);else cout 鏈表為空,請先建鏈表! !cin.get();cin.get();break;system(pause);break;case 0:if(L!=NULL) DestroyList(L); exi
14、t(0);五、實(shí)驗(yàn)結(jié)果一槌表的基本操作占S 結(jié) 位 個出點(diǎn) 一S 入并- 性點(diǎn)工 線結(jié)一結(jié)并紫 立一隧岀 僅-1、廠咅一剩一入輸2 1 請- 與1=1=:2插新.72也竄重?fù)?jù)!繼 耘:數(shù)!鍵1 ft?選2置置結(jié)入按 請請實(shí)驗(yàn)二 棧和隊列、實(shí)驗(yàn)?zāi)康牧私鈼:完犃械奶匦浴?掌握棧的順序表示和實(shí)現(xiàn)。 掌握棧的鏈?zhǔn)奖硎竞蛯?shí)現(xiàn)。 掌握隊列的順序表示和實(shí)現(xiàn)。 掌握隊列的鏈?zhǔn)奖硎竞蛯?shí)現(xiàn)。 掌握棧和隊列在實(shí)際問題中的應(yīng)用、實(shí)驗(yàn)內(nèi)容編寫一個程序?qū)崿F(xiàn)順序棧的各種基本運(yùn)算, 并在此基礎(chǔ)上設(shè)計一個主程序完 成如下功能:初始化順序棧,插入元素,刪除棧頂元素,取棧頂元素,遍歷順序 棧,置空順序棧。三、程序設(shè)計的基本思想,原
15、理和算法描述棧的修改時按照先進(jìn)后出的原則進(jìn)行的, 試驗(yàn)中用到構(gòu)造空棧, 及入棧出棧 操作。隊列是一種先進(jìn)先出的線性表, 只允許在表的一端插入, 而在另一端刪除 元素,試驗(yàn)中構(gòu)造隊并且入隊出隊。立順序棧SeqStack,存放測試數(shù)據(jù);建立隊列SeqQueue存放出棧數(shù)據(jù);建立 InitStack、StackEmpty、StackFull、Pop Push、GetTop 函數(shù)用作順 序棧的基本操作; 建立 InitQueue 、 QEmpty、 Qfull 、 InQueue、 OutQueue、 ReadFront 函數(shù)用作隊列的基本操作;建立主函數(shù)依次按序?qū)ψ雍瘮?shù)進(jìn)行操作:Ini tStack
16、 初始化棧Push壓入數(shù) 據(jù)f Ini tQueue初始化隊列Pop彈出數(shù)據(jù)In Queue存入隊列OutQueue出隊 列一 Push壓入棧Pop彈出數(shù)據(jù)free清空棧與隊列。在數(shù)據(jù)的輸入與數(shù)據(jù)的 輸出時提供必要的提示信息。四、源程序及其注釋#include #include stack.h#include #define MAXSIZE 100/ 作用 :對棧進(jìn)行初始化/ 參數(shù):無/ 返回值: SeqStackSeqStack SeqStackInit()SeqStack S ;S.top = -1 ;return S ;/ 作用 :對棧進(jìn)行判斷是否為空/ 參數(shù):傳入要判斷的棧/返回值:返
17、回TRUE為空,返回FLASE為非空int SeqStackEmpty(SeqStack S)if(S.top top - ;printf(n清空! n) ;/ 作用 :把元素 x 壓入棧,使其成為新的棧頂元素/ 參數(shù):傳入棧和要輸入的數(shù)字/ 返回值:無void SeqStackPush(SeqStack *S,DataType x)S-top+ ;/ 要求是先挖坑,再種蘿卜S-dataS-top = x ;/ 作用 :出棧/ 參數(shù):要從該棧出來/ 返回值:從棧中出來的數(shù)DataType SeqStackPop(SeqStack *S)DataType temp ;if(SeqStackEmp
18、ty(*S)printf(sorry !為空棧! ) ;/ exit(1) ;elsetemp = S-dataS-top ;/ 出棧是當(dāng)前出棧,要求先挖蘿卜再填坑 S-top - ;printf(n%dn,temp) ;/ 作用 :取棧頂元素/ 參數(shù):要操作的棧/ 返回值:從棧中出來的數(shù)DataType SeqStackGetTop(SeqStack S)DataType temp ;if(SeqStackEmpty(S)printf(sorry !為空棧! ) ;/ exit(1) ;elsetemp = S.dataS.top ;/ 出棧是當(dāng)前出棧,要求先挖蘿卜再填坑printf(n%d
19、n,temp)/ 作用 輸出順序棧中的元素/ 參數(shù):要操作的棧/ 返回值:從棧中出來的數(shù)void SeqStackPrint(SeqStack S)DataType temp ;SeqStack p ;p = S ;printf( 輸出棧中的所有元素 :) ;while(!SeqStackEmpty(p)temp = p.datap.top ;/ 出棧是當(dāng)前出棧,要求先挖蘿卜再填坑p.top - ;printf(n% d n,temp) ;/ 當(dāng)這里位置數(shù)據(jù)類型怎么辦void main(void)int num ;int input ;SeqStack p ;p = SeqStackInit(
20、) ;/ 這里調(diào)用入棧函數(shù),把 10,20,30 進(jìn)棧SeqStackPush(&p,10) ;SeqStackPush(&p,20) ;SeqStackPush(&p,30) ;while(1)printf(nt實(shí)驗(yàn)二 nn) ;printf(n1.入棧) ;printf(n2.棧頂元素彈出 ) ;printf(n3.取棧頂元素 ) ;printf(n4.輸出順序棧中的元素 )printf(n5.清空棧 n) ;printf(t請輸入要實(shí)現(xiàn)的功能 n)scanf(%d,&num) ;switch(num)case 1 :ttn) ;printf(n 請輸入要入棧的數(shù): scanf(%d, &
21、input) ;SeqStackPush(&p,input) ;break;case 2 :SeqStackPop(&p) ;break;case 3 :SeqStackGetTop(p) ;break;case 4 :SeqStackPrint(p) ;break;case 5 :ClearStack(&p) ;break;五、實(shí)驗(yàn)結(jié)果棧脛元 恚豐出駱中的元素“請輸入要實(shí)現(xiàn)的功能請輸入要實(shí)現(xiàn)的功能4輸岀棧中的所有元素:4231212枝頂棧岀空 人棧暮詬 12 3 4 5 1元素彈岀請輸入要實(shí)現(xiàn)的功能請輸入要入棧的數(shù);2請瀚人要究現(xiàn)的功能清空!實(shí)驗(yàn)三 二叉樹的建立和遍歷一、實(shí)驗(yàn)?zāi)康?、學(xué)會實(shí)現(xiàn)
22、二叉樹結(jié)點(diǎn)結(jié)構(gòu)和對二叉樹的基本操作。2、掌握對二叉樹每種操作的具體實(shí)現(xiàn),學(xué)會利用遞歸方法編寫對二叉樹這種遞 歸數(shù)據(jù)結(jié)構(gòu)進(jìn)行處理的算法。二、實(shí)驗(yàn)內(nèi)容 編寫程序任意輸入二叉樹的結(jié)點(diǎn)個數(shù)和結(jié)點(diǎn)值, 構(gòu)造一棵二叉樹, 采用三種遞歸 遍歷算法 ( 前序、中序、后序 ) 對這棵二叉樹進(jìn)行遍歷并計算出二叉樹的高度 。三、程序設(shè)計的基本思想,原理和算法描述1、數(shù)據(jù)結(jié)構(gòu)的定義 二叉樹是另一種樹型結(jié)構(gòu), 它的特點(diǎn)是每個結(jié)點(diǎn)至多只有兩棵子樹, 并且二叉樹 有左右之分, 其次序不能任意顛倒。 二叉樹的存儲結(jié)構(gòu)分為順序存儲和鏈?zhǔn)酱鎯?結(jié)構(gòu),本次我們主要應(yīng)用二叉樹的二叉鏈表的方式存儲方式, 實(shí)驗(yàn)中首先必須對 二叉樹的數(shù)據(jù)
23、結(jié)構(gòu)進(jìn)行定義, 即定義一個二叉鏈表, 其中其數(shù)據(jù)成員包括節(jié)點(diǎn)的 數(shù)據(jù)、左子樹的指針、右子樹的指針。2、二叉樹的建立在實(shí)驗(yàn)開始前我們要建立一個以先序形式的二叉樹, 先序的二叉樹就是先訪問根 結(jié)點(diǎn),然后訪問左子樹,最后訪問右子樹的遍歷。3、二叉樹的遍歷 二叉樹的遍歷分為先序、中序、后序,需先取遍歷的節(jié)點(diǎn)的數(shù)據(jù)存入隊列中,然 后輸出。4、程序中要的函數(shù)的介紹 ( 1)二叉樹的類型定義 (2)定義鏈?zhǔn)疥犃蓄愋?( 3)初始化鏈?zhǔn)疥犃械暮瘮?shù) (4)主函數(shù)四、源程序及注釋#include#includetypedef struct BiTNodechar data;struct BiTNode *lchi
24、ld,*rchild;BiTNode,*BiTree;void CreatBiTree(BiTree &T)/ 前序法創(chuàng)建二叉樹char ch;if(ch=getchar()=n)T=NULL;elseT=(BiTNode*)malloc(sizeof(BiTNode);if(!T)exit(1);T-data=ch;CreatBiTree(T-lchild);CreatBiTree(T-rchild);void PreTravel(BiTree &T)/ 前序遍歷if(T)printf(%c,T-data);PreTravel(T-lchild);PreTravel(T-rchild);vo
25、id MidTravel(BiTree &T)/ 中序遍歷if(T)MidTravel(T-lchild);printf(%c,T-data);MidTravel(T-rchild);void PostTravel(BiTree &T)/ 后序遍歷if(T)PostTravel(T-lchild);PostTravel(T-rchild);printf(%c,T-data);void main()BiTree T;printf(please input the bitree:n );CreatBiTree(T);printf(The Pretravel is:n);PreTravel(T);p
26、rintf(n);/*/printf(The Midtravel is:n);MidTravel(T);printf(n);/*/printf(The PostTravel is:n);PostTravel(T);printf(n);五、實(shí)驗(yàn)結(jié)果p 1 e.s e inline thu bitree : 13I he Pr-e travel135The Midtrvel is =135The PostTiael is-531Press any key t;o continue實(shí)驗(yàn)四 查找和排序一、實(shí)驗(yàn)?zāi)康?1) 掌握查找的不同方法,并能用 c 語言實(shí)現(xiàn)查找算法。(2) 掌握常用的排序方法,并掌
27、握用 c 語言實(shí)現(xiàn)排序算法的方法。(3) 熟練掌握順序表的選擇排序、冒泡排序、直接插入排序等算法的實(shí)現(xiàn);(4) 了解各種方法的排序過程及其時間復(fù)雜度的分析方法。二、實(shí)驗(yàn)內(nèi)容(1) 完整理解有關(guān)排序和查找的相關(guān)算法和基本思想以及種種算法使用的數(shù)據(jù)存 儲結(jié)構(gòu);(2) 通過線性表對一組數(shù)據(jù)中的某個數(shù)據(jù)進(jìn)行查找; 對該組數(shù)據(jù)進(jìn)行從小到大的順序進(jìn)行排序; 三、程序設(shè)計的基本思想,原理和算法描述 :開始的時候提示輸入一組數(shù)據(jù)。 并存入一維數(shù)組中, 接下來調(diào)用一系列查找算法 對其進(jìn)行處理。 順序查找只是從頭到尾進(jìn)行遍歷。 二分查找則是先對數(shù)據(jù)進(jìn)行排 序,然后利用三個標(biāo)志,分別指向最大,中間和最小數(shù)據(jù),接下來
28、根據(jù)待查找數(shù) 據(jù)和中間數(shù)據(jù)的比較不斷移動標(biāo)志, 直至找到。 二叉排序樹則是先構(gòu)造, 構(gòu)造部 分花費(fèi)最多的精力, 比根節(jié)點(diǎn)數(shù)據(jù)大的結(jié)點(diǎn)放入根節(jié)點(diǎn)的右子樹, 比根節(jié)點(diǎn)數(shù)據(jù) 小的放入根節(jié)點(diǎn)的左子樹, 其實(shí)完全可以利用遞歸實(shí)現(xiàn), 這里使用的循環(huán)來實(shí)現(xiàn) 的,感覺這里可以嘗試用遞歸。 當(dāng)二叉樹建好后, 中序遍歷序列即為由小到大的 有序序列,查找次數(shù)不會超過二叉樹的深度。這里還使用了廣義表輸出二叉樹, 以使得更直觀。哈希表則是利用給定的函數(shù)式建立索引,方便查找。四、源程序及其注釋#include #define LENGTH 100#include #include #define INFMT %d#def
29、ine OUTFMT %d /* #define NULL 0L */ #define BOOL int#define TRUE 1 #define FALSE 0#define LEN 10000typedef int ElemType;typedef struct BSTNodeElemType data;struct BSTNode *lchild, *rchild; BSTNode, *BSTree; typedef BSTree BiTree;/* 插入新節(jié)點(diǎn) */void Insert(BSTree *tree, ElemType item)BSTree node = (BSTre
30、e)malloc(sizeof(BSTNode); node-data = item;node-lchild = node-rchild = NULL;if (!*tree)*tree = node;elseBSTree cursor = *tree;while (1)if (item data)if (NULL = cursor-lchild)cursor-lchild = node;break;cursor = cursor-lchild;elseif (NULL = cursor-rchild)cursor-rchild = node;break;cursor = cursor-rchi
31、ld;return;voidshowbitree(BiTree T)/ 遞歸顯示二叉樹的廣義表形式打印根節(jié)點(diǎn)if(!T) printf( 空 );return; printf(%d,T-data); / if(T-lchild |T-rchild)putchar();showbitree(T-lchild);/ 遞歸顯示左子樹putchar(,);showbitree(T-rchild);/ 遞歸顯示右子樹putchar();/* 查找指定值 */BSTree Search(BSTree tree, ElemType item) BSTree cursor = tree;while (curs
32、or)if (item = cursor-data)return cursor;else if ( item data)cursor = cursor-lchild;elsecursor = cursor-rchild;return NULL;/* 中綴遍歷 */void Inorder(BSTree tree)BSTree cursor = tree;if (cursor)Inorder(cursor-lchild);printf(OUTFMT, cursor-data);Inorder(cursor-rchild);/* 回收資源 */void Cleanup(BSTree tree)BS
33、Tree cursor = tree, temp = NULL;if (cursor)Cleanup(cursor-lchild);Cleanup(cursor-rchild);free(cursor);void searchtree(BSTree root)char choice;printf( 中序遍歷的結(jié)果為 :n);Inorder(root);printf(nn);ElemType item;BSTree ret;/* 二叉排序樹的查找測試 */doprintf(n 請輸入查找數(shù)據(jù): );scanf(%d, &item);getchar();printf(Searching.n);re
34、t = Search(root, item);if (NULL = ret)printf( 查找失敗! );elseprintf( 查找成功! );n);printf(n 繼續(xù)測試按 y ,退出按其它鍵。choice = getchar(); while (choice=y|choice=Y);Cleanup(root);searchhash(int *arr,int n)int a10;int b,i,j,c;j=1;for(i=0;i9;i+)ai=0;printf( 以下為哈希表輸出 n);for(i=0;in;i+)c=arri%7;A: if(ac=0)ac=arri;else c=
35、(c+1)%7;j+;ac+;goto A;printf(n%d 在哈希表的第4位,第4次放入哈希表n,arri,c,j);j=1;void SequenceSearch(int *fp,int Length);void Search(int *fp,int length);void Sort(int *fp,int length);void SequenceSearch(int *fp,int Length)int data;printf( 開始使用順序查詢 .n 請輸入你想要查找的數(shù)據(jù) .n); scanf(%d,&data);for(int i=0;iLength;i+)if(fpi=d
36、ata)printf(經(jīng)過d次查找,查找到數(shù)據(jù) %d.n,i+1,data);return ;printf( 經(jīng)過d次查找,未能查找到數(shù)據(jù)%d.n,i,data); void Search(int *fp,int length)int data;printf( 開始使用順序查詢 .n 請輸入你想要查找的數(shù)據(jù) .n); scanf(%d,&data);.n);printf( 由于二分查找法要求數(shù)據(jù)是有序的,現(xiàn)在開始為數(shù)組排序 Sort(fp,length);printf( 數(shù)組現(xiàn)在已經(jīng)是從小到大排列 , 下面將開始查找 .n);int bottom,top,middle;bottom=0;top
37、=length;int i=0;while (bottom=top)middle=(bottom+top)/2;i+;if(fpmiddledata)top=middle-1; elseprintf(”經(jīng)過d次查找,查找到數(shù)據(jù)d.n,i,data);return;printf( 經(jīng)過d次查找,未能查找到數(shù)據(jù)%d.n,i,data);void Sort(int *fp,int length).n);printf( 現(xiàn)在開始為數(shù)組排序,排列結(jié)果將是從小到大int temp;for(int i=0;ilength;i+)for(int j=0;jfpj+1)temp=fpj;fpj=fpj+1;fp
38、j+1=temp;printf( 排序完成 !n 下面輸出排序后的數(shù)組 :n);for(int k=0;klength;k+)printf(%5d,fpk);printf(n);struct hash int key;int si;struct hash hlist11;int i,adr,sum,d;float average;void chash(int *arr,int n) for(i=0;i11;i+) hlisti.key=0;hlisti.si=0;for(i=0;in;i+) sum=0;adr=(3*arri)%11;d=adr;if(hlistadr.key=0) hlistadr.key=arri;hlistadr.si=1;else
溫馨提示
- 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)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 二零二五年度農(nóng)村出租房租賃與農(nóng)村電商物流倉儲服務(wù)合同
- 2025年度公司辦公大樓綠色建筑認(rèn)證裝飾施工合同3篇
- 2025年度兼職會計財務(wù)咨詢與培訓(xùn)聘用合同范本2篇
- 2024年中國皮革裝飾帶市場調(diào)查研究報告
- 二零二五年度農(nóng)村宅基地房屋租賃與農(nóng)業(yè)產(chǎn)業(yè)發(fā)展合同
- 2025年度航空航天器部件維修合同3篇
- 2024年河北省胸科醫(yī)院河北省結(jié)核病醫(yī)院高層次衛(wèi)技人才招聘筆試歷年參考題庫頻考點(diǎn)附帶答案
- 2024年河北省第六人民醫(yī)院高層次衛(wèi)技人才招聘筆試歷年參考題庫頻考點(diǎn)附帶答案
- 二零二五年度農(nóng)產(chǎn)品質(zhì)量安全檢測設(shè)備采購合同3篇
- 2024年中國環(huán)形魚鉤市場調(diào)查研究報告
- 污水排入城鎮(zhèn)污水管網(wǎng)排放口設(shè)置技術(shù)規(guī)范
- 浙江省紹興市2023-2024學(xué)年高一上學(xué)期1月期末考試英語試題(解析版)
- 事業(yè)單位獎勵審批表主要事跡教師300字范文六篇
- 煤氣柜試運(yùn)行總結(jié)
- 人際溝通:協(xié)調(diào)職場關(guān)系提高工作效率
- 網(wǎng)絡(luò)切片技術(shù)概述
- 2024年度醫(yī)院各科室醫(yī)務(wù)人員述職報告之皮膚科課件
- 《急性心梗的自救》課件
- 中成藥手冊完整版本
- 2023-2024學(xué)年成都市金牛區(qū)九年級上英語(一診)期末考試題(含答案)
- 2023年MC主管年終業(yè)務(wù)工作總結(jié)
評論
0/150
提交評論