數(shù)據(jù)結(jié)構(gòu)實(shí)驗(yàn)題參考答案[1]_第1頁(yè)
數(shù)據(jù)結(jié)構(gòu)實(shí)驗(yàn)題參考答案[1]_第2頁(yè)
數(shù)據(jù)結(jié)構(gòu)實(shí)驗(yàn)題參考答案[1]_第3頁(yè)
數(shù)據(jù)結(jié)構(gòu)實(shí)驗(yàn)題參考答案[1]_第4頁(yè)
數(shù)據(jù)結(jié)構(gòu)實(shí)驗(yàn)題參考答案[1]_第5頁(yè)
已閱讀5頁(yè),還剩15頁(yè)未讀, 繼續(xù)免費(fèi)閱讀

下載本文檔

版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請(qǐng)進(jìn)行舉報(bào)或認(rèn)領(lǐng)

文檔簡(jiǎn)介

1、【實(shí)驗(yàn)題】1 狐貍逮兔子圍繞著山頂有10 個(gè)圓形排列的洞,狐貍要吃兔子,兔子說:“可以,但必須找到我,我就藏身于這十個(gè)洞中,你先到1號(hào)洞找,第二次隔1個(gè)洞(即3號(hào)洞)找,第三次隔2個(gè)洞(即6 號(hào)洞)找,以后如此類推,次數(shù)不限?!钡倧脑绲酵磉M(jìn)進(jìn)出出了 1000 次,仍沒有找到兔子。問兔子究竟藏在哪個(gè)洞里?(提示:這實(shí)際上是一個(gè)反復(fù)查找線性表的過程。 )【數(shù)據(jù)描述】定義一個(gè)順序表, 用具有 10 個(gè)元素順序表來表示這 10 個(gè)洞。 每個(gè)元素分別表示圍著山頂?shù)囊粋€(gè)洞,下標(biāo)為洞的編號(hào)。#define LIST_INIT_SIZE 10 / 線性表存儲(chǔ)空間的初始分配量typedef struct E

2、lemType *elem; / 存儲(chǔ)空間基址int length; / 當(dāng)前長(zhǎng)度int listsize; / 當(dāng)前分配的存儲(chǔ)容量(以 sizeof(ElemType) 為單位)SqList;【算法描述】status InitList_Sq(SqList &L) / 構(gòu)造一個(gè)線性表LL.elem=(ElemType )malloc(LIST_INIT_SIZE*sizeof(ElemType);If(!L.elem) return OVERFLOW; / 存儲(chǔ)分配失敗L.length=0;/ 空表長(zhǎng)度為 0L.listsize=LIST_INIT_SIZE; / 初始存儲(chǔ)容量 return

3、OK; /InitList_Sqstatus Rabbit(SqList &L) / 構(gòu)造狐貍逮兔子函數(shù)int current=0; / 定義一個(gè)當(dāng)前洞口號(hào)的記數(shù)器,初始位置為第一個(gè)洞口for(i=0;iLIST_INIT_SIZE;i+)L.elemi=1; / 給每個(gè)洞作標(biāo)記為 1 ,表示狐貍未進(jìn)之洞L.elemLIST_INIT_SIZE-1=L.elem0=0;/首先進(jìn)入第一個(gè)洞,標(biāo)記進(jìn)過的洞為 0。for(i=2;i=1000;i+) current=(current+i)%LIST_INIT_SIZE;/ 實(shí)現(xiàn)順序表的循環(huán)引用L.elemi=0; / 標(biāo)記進(jìn)過的洞為 0/第二次隔1

4、個(gè)洞找,第三次隔2個(gè)洞找,以后如此類推,經(jīng)過一千次printf( 兔子可能藏在如下的洞中: )for(i=0;iLIST_INIT_SIZE;i+)if(L.elemi=1)printf( “第dj洞n 尸1);/ 輸出未進(jìn)過的洞號(hào) return OK;/end【 C 源程序】#include #include #define OK 1#define OVERFLOW -2typedef int status;typedef int ElemType;*/#define LIST_INIT_SIZE 10 /* 線性表存儲(chǔ)空間的初始分配量typedef struct ElemType *ele

5、m; /* int length; /* int listsize; /*存儲(chǔ)空間基址*/當(dāng)前長(zhǎng)度 */當(dāng)前分配的存儲(chǔ)容量(以sizeof(ElemType) 為單位) */SqList;status InitList_Sq(SqList *L) TOC o 1-5 h z /* 構(gòu)造一個(gè)線性表L */(*L).elem=(ElemType *)malloc(LIST_INIT_SIZE*sizeof(ElemType); if(!(*L).elem) return OVERFLOW; /*存儲(chǔ)分配失敗*/(*L).length=0; /* 空表長(zhǎng)度為 0 */(*L).listsize=LI

6、ST_INIT_SIZE; /*初始存儲(chǔ)容量*/return OK; /*InitList_Sq */status Rabbit(SqList *L)/* 構(gòu)造狐貍逮兔子函數(shù) */int i,current=0; /*定義一個(gè)當(dāng)前洞口號(hào)的記數(shù)器,初始位置為第一個(gè)洞口*/for(i=0;iLIST_INIT_SIZE;i+)(*L).elemi=1; /*給每個(gè)洞作標(biāo)記為 1,表示狐貍未進(jìn)之洞*/(*L).elemLIST_INIT_SIZE-1=0;(*L).elem0=0; /* 第一次進(jìn)入第一個(gè)洞,標(biāo)記進(jìn)過的洞為 0 */for(i=2;i=1000;i+) current=(curren

7、t+i)%LIST_INIT_SIZE;/* 實(shí)現(xiàn)順序表的循環(huán)引用 */(*L).elemcurrent=0; /*標(biāo)記進(jìn)過的洞為 0 */*第二次隔1個(gè)洞找,第三次隔2個(gè)洞找,以后如此類推,經(jīng)過一千次*/printf(n 兔子可能藏在如下的洞中: ) ;for(i=0;iLIST_INIT_SIZE;i+)if(*L).elemi=1)printf( n 此洞是第d號(hào)洞,i+1);/* 輸出未進(jìn)過的洞號(hào) */ return OK;void main()SqList *L;InitList_Sq(L);Rabbit(L);getch();【測(cè)試數(shù)據(jù)】最后的輸出結(jié)果為: 2 4 7 9【說明】1

8、,本算法思路比較簡(jiǎn)單,采用了順序表表示圍著山頂?shù)?10 個(gè)洞,首先對(duì)所有洞設(shè)置標(biāo)志為然后通過 1000 次循環(huán),對(duì)每次所進(jìn)之洞修改標(biāo)志為 0 ,最后輸出標(biāo)志為 1 的洞。2 銀行客戶 某銀行有一個(gè)客戶辦理業(yè)務(wù)站, 在單位時(shí)間內(nèi)隨機(jī)地有客戶到達(dá), 設(shè)每位客戶的業(yè)務(wù)辦理時(shí)間是某個(gè)范圍內(nèi)的隨機(jī)值。 設(shè)只有一個(gè)窗口, 一位業(yè)務(wù)人員, 要求程序模擬統(tǒng)計(jì)在設(shè)定時(shí)間內(nèi), 業(yè)務(wù)人員的總空閑時(shí)間和客戶的平均等待時(shí)間。 假定模擬數(shù)據(jù)已按客戶到達(dá)的先后順序依次存于某個(gè)正文數(shù)據(jù)文件中。 對(duì)應(yīng)每位客戶有兩個(gè)數(shù)據(jù), 到達(dá)時(shí)間和需要辦理業(yè)務(wù)的時(shí)間。復(fù)習(xí)概念:與棧相對(duì)應(yīng),隊(duì)列是一種先進(jìn)先出的線性表。它只允許在表的一端進(jìn)行插入

9、,而在另一 端進(jìn)行刪除元素。允許插入的一端稱隊(duì)尾,允許刪除的一端稱隊(duì)頭。插入與刪除分別稱為入隊(duì)與出隊(duì)。隊(duì)列示意圖見圖3-2 :出隊(duì)al a2 , an-1an 進(jìn)隊(duì)TO【數(shù)據(jù)描述】typedef structint arrive;int treat;/ 客戶的信息結(jié)構(gòu)QNODEtypedef struct nodeQNODE data;Struct node *next; 隊(duì)列中的元素信息LNODELNODE *front,*rear;隊(duì)頭指針和隊(duì)尾指針【算法描述】設(shè)置統(tǒng)計(jì)初值;設(shè)置當(dāng)前時(shí)鐘時(shí)間為 0;打開數(shù)據(jù)文件,準(zhǔn)備讀;讀入第一位客戶信息于暫存變量中;do /約定每輪循環(huán),處理完一位客戶i

10、f(等待隊(duì)列為空,并且還有客戶 ) /等待隊(duì)列為空時(shí)累計(jì)業(yè)務(wù)員總等待時(shí)間;時(shí)鐘推進(jìn)到暫存變量中的客戶的到達(dá)時(shí)間;暫存變量中的客戶信息進(jìn)隊(duì);讀取下一位客戶信息于暫存變量;累計(jì)客戶人數(shù);從等待隊(duì)列出隊(duì)一位客戶;將該客戶的等待時(shí)間累計(jì)到客戶的總等待時(shí)間;設(shè)定當(dāng)前客戶的業(yè)務(wù)辦理結(jié)束時(shí)間;while( 下一位客戶的到達(dá)時(shí)間在當(dāng)前客戶處理結(jié)束之前)暫存變量中的客戶信息進(jìn)隊(duì);讀取下一位客戶信息于暫存變量;時(shí)鐘推進(jìn)到當(dāng)前客戶辦理結(jié)束時(shí)間;while( 還有未處理的客戶);計(jì)算統(tǒng)計(jì)結(jié)果,并輸出;【C源程序】#include#include#define OVERFLOW -2typedef structint

11、arrive;int treat; /* 客戶的信息結(jié)構(gòu)*/QNODE;typedef struct nodeQNODE data;struct node *next; /* 隊(duì)列中的元素信息*/LNODE;LNODE *front,*rear;/* 隊(duì)頭指針和隊(duì)尾指針 */QNODE curr,temp;char Fname120;FILE *fp;void EnQueue(LNODE *hpt,LNODE *tpt,QNODE e)/* 隊(duì)列進(jìn)隊(duì) */LNODE *p=(LNODE *)malloc(sizeof(LNODE);if(!p) exit(OVERFLOW); /* 存儲(chǔ)分配失

12、敗*/p-data=e;p-next=NULL;if(*hpt=NULL) *tpt=*hpt=p;else *tpt=(*tpt)-next=p;int DeQueue(LNODE *hpt,LNODE *tpt,QNODE *cp)/* 鏈接隊(duì)列出隊(duì)*/LNODE *p=*hpt;if(*hpt=NULL) return 1;/* 隊(duì)空 */ *cp=(*hpt)-data;*hpt=(*hpt)-next;if(*hpt=NULL) *tpt=NULL;free(p);return 0;void main() int dwait=0,clock=0,wait=0,count=0,have

13、=0,finish;printf(n enter file name:);scanf(%s,Fname);/* 輸入裝客戶模擬數(shù)據(jù)的文件的文件名 */if(fp=fopen(Fname, r)=NULL) /*打開數(shù)據(jù)文件*/printf(cannot open file %s,Fname);return;front=NULL;rear=NULL;have=fscanf(fp, %d%s,&temp.arrive,&temp.treat);if(front=NULL & have=2) /* dwait+=temp.arrive-clock; /* clock=temp.arrive; /*E

14、nQueue(&front,&rear,temp); /*do /* 約定每輪循環(huán),處理一位客戶 */等待隊(duì)列為空,但還有客戶 */*/累計(jì)業(yè)務(wù)員總等待時(shí)間 */時(shí)鐘推進(jìn)到暫存變量中的客戶的到達(dá)時(shí)間暫存變量中的客戶信息進(jìn)隊(duì)*/have=fscanf(fp, %d%d,&temp.arrive,&temp.treat);count+;/*DeQueue(&front,&rear,&curr);/*wait+=clock-curr.arrive; /*finish=clock+curr.treat;/*累計(jì)客戶人數(shù) */出隊(duì)一位客戶信息*/累計(jì)到客戶的總等待時(shí)間 */設(shè)定業(yè)務(wù)辦理結(jié)束時(shí)間; */w

15、hile(have=2 & temp.arrive=finish) TOC o 1-5 h z /*下一位客戶的到達(dá)時(shí)間在當(dāng)前客戶處理結(jié)束之前*/EnQueue(&front,&rear,temp);/*暫存變量中的客戶信息進(jìn)隊(duì)*/have=fscanf(fp, %d%d,&temp.arrive,&temp.treat); clock=finish; /*時(shí)鐘推進(jìn)到當(dāng)前客戶辦理結(jié)束時(shí)間*/while(have=2 | front!=NULL); printf( 結(jié)果:業(yè)務(wù)員等待時(shí)間 dn客戶平均等待時(shí)間%fn,dwait, (double)wait/count); printf( 模擬總時(shí)間

16、:d, n客戶人數(shù):%d,n總等待時(shí)間: dn,clock, count,wait); getch(); /*main_end*/ 【測(cè)試藪據(jù)】設(shè)數(shù)據(jù)裝在一個(gè)數(shù)據(jù)文件data.dat中,內(nèi)容為:10 6 13 8顯示結(jié)果為: enter file name:data.dat enter file name:data.dat結(jié)果:業(yè)務(wù)員等待時(shí)間10 客戶平均等待時(shí)間 25.500000 模擬總時(shí)間:72, 客戶人數(shù):2, 總等待時(shí)間:51 【說明】在計(jì)算程序中,程序按模擬環(huán)境中的事件出同順序逐一處理事件:當(dāng)一個(gè)事件結(jié)束時(shí), 下一個(gè)事件隔一段時(shí)間才發(fā)生,則程序邏輯的模擬時(shí)鐘立即推進(jìn)到下一事件的發(fā)生

17、時(shí)間;如一個(gè)事件還未處理結(jié)束之前,另有其他事件等待處理,則這些事件就應(yīng)依次排隊(duì)等候處理。.二叉樹的的應(yīng)用:設(shè)計(jì)一個(gè)表示家譜的二叉樹 要求:采用一棵二叉樹表示一逐步形成家譜關(guān)系,對(duì)于給定的父親顯示所有的兒子。 由于家譜為樹形,但不是一棵二叉樹,所以在存儲(chǔ)時(shí)要轉(zhuǎn)換成二叉樹的形式。規(guī)定:一個(gè)父 親結(jié)點(diǎn)的左子樹表示母親結(jié)點(diǎn),母親結(jié)點(diǎn)的右子樹表示他們的所有兒子,例如,圖1是一個(gè)用二叉樹表示的家譜圖,與之對(duì)應(yīng)的傳統(tǒng)樹形圖家譜圖如圖2所示。這樣就將家譜樹轉(zhuǎn)換成二叉樹了,而二叉樹的操作是容易實(shí)現(xiàn)的。C源程序#include #include #include #define MaxWidth 40#defin

18、e MaxSize 30typedef struct treenodechar name10;struct treenode *left,*right; *BTree;BTree findfather(BTree p,char xm)BTree bt;if(p=NULL) return(NULL);elseif(strcmp(p-name,xm)=0)return(p);elsebt=findfather(p-left,xm);if(bt!=NULL) return(bt);else return(findfather(p-right,xm);BTree creatree()int n,m,i

19、,contin=1,first=1;char xm10;BTree btree,s,t,p;printf(n 建立一個(gè)家譜二叉樹(以空格結(jié)尾) : n);while(contin)if(first=1)btree=(BTree)malloc(sizeof(struct treenode);printf(t 姓名: );gets(btree-name);btree-right=NULL;s=(BTree)malloc(sizeof(struct treenode);printf(t 妻子: );gets(s-name);s-left=s-right=NULL;btree-left=s;first

20、=0;elseprintf(t 父親: );gets(xm);if(strcmp(xm, )=0)contin=0;elsep=findfather(btree,xm);if(p!=NULL)p=p-left;if(p=NULL) /* 沒有妻子 */printf(t 沒有兒子(因?yàn)闆]有妻子) n);elsewhile(p-right!=NULL) p=p-right;s=(BTree)malloc(sizeof(struct treenode);s-right=NULL;p-right=s;printf(t兒子:);gets(s-name);printf(t兒妻:);gets(xm);if(

21、strcmp(xm,)!=0)t=(BTree)malloc(sizeof(struct treenode);strcpy(t-name,xm);t-left=t-right=NULL;s-left=t;else s-left=NULL;else printf( 不存在這樣的父結(jié)點(diǎn)! n);return(btree);void disptree(BTree BT)BTree stackMaxSize,p;int levelMaxSize2,top,n,i,width=4;if(BT!=NULL)printf(n 家譜凹入表示法:n);top=1;stacktop=BT; /* 根結(jié)點(diǎn)入棧*/l

22、eveltop0=width;while (top0)p=stacktop; /*退棧并凹入顯示該結(jié)點(diǎn)值*/n=leveltop0;其中 n 為顯示場(chǎng)寬 , 字符以右對(duì)齊顯示*/for (i=1;iname);for(i=n+1;iright!=NULL) top+;/*將右子樹根結(jié)點(diǎn)入棧*/stacktop=p-right;/*顯示場(chǎng)寬增width*/leveltop0=n+width;leveltop1=2;if (p-left!=NULL)top+;/*將左子樹根結(jié)點(diǎn)入棧*/stacktop=p-left;/*顯示場(chǎng)寬增width*/leveltop0=n+width;leveltop1

23、=1;void findson(BTree bt) char xm10;BTree p;printf(n 查找指定父親的所有兒子n);printf( 父親: );gets(xm);p=findfather(bt,xm);if(p=NULL)printf(不存在 $的父親! n,xm);elsep=p-left;p=p-right;if(p=NULL)printf(%s 沒有兒子 !n,xm);elseprintf(%s 有以下兒子!nt);while(p!=NULL)printf(%8s ,p-name);p=p-right;)main()(BTree bt;bt=creatree();dis

24、ptree(bt); findson(bt);)運(yùn)行結(jié)果建立一個(gè)家譜二叉機(jī)(以空格結(jié)尾):姓名:張德妻子:陳氏 父親:張德 兒子:張文 兒妻:劉氏 父親:張德 兒子:張武 兒妻:王氏 父親:張文 兒子:張兵 兒妻:李氏 父親:張文 兒子:張強(qiáng)兒妻:父親:張武 兒子:張華 兒妻:父親:家譜凹入表示法:張德陳氏張文劉氏張兵李氏一 張強(qiáng)一張武王氏李華一查找指定父親的所有兒子父親:張德有以下兒子!張武張文.最短路徑 假設(shè)有 n 個(gè)城市組成一個(gè)公路網(wǎng)(有向的),并用代價(jià)鄰接矩陣表示該網(wǎng)絡(luò),編寫一個(gè)指定城市 v 到其他各城市的最短路徑的函數(shù)。方法:直接采用 Dijkstra 算法,略。5排序?qū)τ趯?duì)于輸入的

25、數(shù)字按從小到大和從大到小兩種順序進(jìn)行排序,并顯示中間排序過程。 提示 可以采用快速排序方法進(jìn)行數(shù)字的兩種排序。C源程序#include #define MAX 100void disparr();int aMAX,n,m;void creatarr()int i=0;printf( 建立原始數(shù)序n);printf(t 元素個(gè)數(shù): );scanf(%d,&n);while(in)printf(t第 個(gè)元素:”,i+1);scanf(%d,&ai);i+;int cmp(int lval,int rval,int order)if(order=1)if(lvalrval) return(1);el

26、se return(0);void quicksort(int x,int l,int r,int order)/* 把 xl 至 xr 的元素進(jìn)行快速排序*/int i=l,j=r,k,temp;temp=xl;while(ij)while(ij & cmp(temp,xj,order) j-;/*/if(ij) xi=xj;i+;while(ij & cmp(xi,temp,order) i+;/*/ if(ij)xj=xi;j-;xi=temp;printf(t(%d) ,m+);for(k=0;kn;k+)if(k=l) printf( );if(k=i) printf( );prin

27、tf( %d ,xk);if(k=i) printf( );if(k=r) printf( );printf(n);if(li) quicksort(x,l,i-1,order);if(ir) quicksort(x,j+1,r,order);void disparr()int i;for(i=0;in;i+)printf(%d ,ai);printf(nn);main()creatarr(a);m=1;printf(n 原來的次序: );disparr();printf( 從小到大排次序: n);quicksort(a,0,n-1,1);printf( 排序結(jié)果: );disparr();m

28、=1;printf( 從大到小排序: n);quicksort(a,0,n-1,0);printf( 排序結(jié)果: );disparr();建立原始數(shù)序元素個(gè)數(shù): 10 TOC o 1-5 h z 第 1個(gè)元素:9第 2個(gè)元素:4第 3個(gè)元素:0第 4個(gè)元素:2第 5個(gè)元素:5第 6個(gè)元素:3第 7個(gè)元素:8第 8個(gè)元素:7第 9個(gè)元素:1第 10 個(gè)元素: 6原來的次序: 9 4 0 2 5 3 8 7 1 6從小到大排次序:64025387 1 9140253 6 78 90 1 4253 67 890 1 425 367890 13 2 4 5 678901 2 345678901 234

29、567890123 4567890123 45 67 890 1 2 3 4 5 6 7 8 9排序結(jié)果: 0 1 2 3 4 5 6 7 8 9從大到小排序: 9123456780912345678 098234567 1098 2345671098 734562109873456 21098764532109876 4532109 8 7 6 5 4 3 2 1 09 8 7 6 5 4 3 2 1 0排序結(jié)果: 9 8 7 6 5 4 3 2 1 06 哈希函數(shù)設(shè)數(shù)序?yàn)?53,17,12,61,98,70,87,25,63,46,14,59,67,75,哈希表長(zhǎng) M=18,哈希函數(shù)為:H

30、(k)=k MOD 17建立對(duì)應(yīng)的哈希表,采用開放地址法中的二次探測(cè)瑞散列解決沖突,并查找值為 70 的 元素位置。C源程序#include #define MAX 100int haMAX,hlenMAX,n,m,p;void creathash()int i,j,d,d1,odd,s,keyMAX;printf(= 建立散列表=n);printf(輸入元素個(gè)數(shù)n:);scanf(%d,&n);printf(輸入哈希表長(zhǎng)m:);scanf(%d,&m);printf( 散列函數(shù) :h(k) MOD p: );scanf(%d,&p);for(i=0;im;i+) hai=hleni=0;/*

31、hleni 為第 i 個(gè)元素的查找長(zhǎng)度 */i=0;while(in)printf(第 個(gè)元素:,i+1);scanf(%d,&keyi);odd=1;if(keyi=0) printf(輸入錯(cuò)誤,重新輸入! n);else i+;i=0;printf( 哈希表建立如下: n);while(in)odd=1;d=d1=keyi%p;j=s=1; /* 記錄比較次數(shù)*/printf(H(%d)=%d MOD %d=%d,keyi,keyi,p,d);while(had!=0)printf( 沖突 n);if(odd)d=(d1+j*j)%m;printf(H(%d)=(%d+%d*%d) MOD

32、 %d=%d,keyi,d1,j,j,m,d);odd=0;elsed=(d1-j*j)%m;printf(H(%d)=(%d-%d*%d) MOD %d=%d,keyi,d1,j,j,m,d);odd=1;j+;s+;printf(比較 次坨$);had=keyi;hlend=s;i+;void disphash()int i,s=0;printf(n 散列表 H 為: n);for(i=0;im;i+)printf(%3d,i);printf(n);for(i=0;im;i+)printf(%3d,hai);printf(n);for(i=0;im;i+)printf(%3d,hleni)

33、;printf(n);for(i=0;im;i+) s=s+hleni;printf(tASL(%d)=%6.2fn,n,(1.0*s)/n);void findhash()int x,j,d,d1,odd=1;printf(n 輸入要查找的值: );scanf(%d,&x);d=d1=x%p;j=1;while(had!=0 & had!=x)if(odd)d=(d1+j*j)%m;odd=0;elsed=(d1-j*j)%m;odd=1;j+;n);if(had=0) printf(t輸入的查找值不正確!else printf(t 查找值: ha%d=%d!n,d,x);main()cre

34、athash();disphash();findhash();=建立散列表=輸入元素個(gè)數(shù)n:14輸入哈希表長(zhǎng)m:18散列函數(shù) :h(k) MOD p: 17第 1 個(gè)元素: 53 TOC o 1-5 h z 第 2個(gè)元素:17第 3個(gè)元素:12第 4個(gè)元素:61第 5個(gè)元素:98第 6個(gè)元素:70第 7個(gè)元素:87第 8個(gè)元素:25第 9個(gè)元素:63第 10個(gè)元素:46第 11 個(gè)元素:59第 12個(gè)元素:14第 13個(gè)元素:67第 14 個(gè)元素:75哈希表建立如下: TOC o 1-5 h z H(53)=53 MOD 17=2比較1 次H(17)=17 MOD 17=0比較1 次H(12)

35、=12 MOD 17=12比較1次H(61)=61 MOD 17=10比較1次H(98)=98 MOD 17=13比較1次H(70)=70 MOD 17=2沖突H(70)=(2+1*1) MOD 18=3 比較 2 次H(87)=87 MOD 17=2 沖突H(87)=(2+1*1) MOD 18=3 沖突H(87)=(2-1*1) MOD 18=1 比較 3 次H(25)=25 MOD 17=8比較1 次H(63)=63 MOD 17=12 沖突H(63)=(12+1*1) MOD 18=13 沖突H(63)=(12-1*1) MOD 18=11 比較 3 次H(46)=46 MOD 17=

36、12 沖突H(46)=(12+1*1) MOD 18=13沖突H(46)=(12-1*1) MOD 18=11沖突H(46)=(12+2*2) MOD 18=16 比較 4 次H(59)=59 MOD 17=8 沖突H(59)=(8+1*1) MOD 18=9 比較 2 次H(14)=14 MOD 17=14 比較 1 次H(67)=67 MOD 17=16 沖突H(67)=(16+1*1) MOD 18=17 比較 2 次H(75)=75 MOD 17=7 比較 1 次散列表 H 為:0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 1717 87 53 70 0 0 0 75 25 59 61 63 12 98 14 0 46 671 3 1 2 0 0 0

溫馨提示

  • 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請(qǐng)下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請(qǐng)聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
  • 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁(yè)內(nèi)容里面會(huì)有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
  • 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
  • 5. 人人文庫(kù)網(wǎng)僅提供信息存儲(chǔ)空間,僅對(duì)用戶上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對(duì)用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對(duì)任何下載內(nèi)容負(fù)責(zé)。
  • 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請(qǐng)與我們聯(lián)系,我們立即糾正。
  • 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時(shí)也不承擔(dān)用戶因使用這些下載資源對(duì)自己和他人造成任何形式的傷害或損失。

最新文檔

評(píng)論

0/150

提交評(píng)論