畢業(yè)論文-于基hash表的班級成員管理數(shù)據(jù)結構課程設計_第1頁
畢業(yè)論文-于基hash表的班級成員管理數(shù)據(jù)結構課程設計_第2頁
畢業(yè)論文-于基hash表的班級成員管理數(shù)據(jù)結構課程設計_第3頁
畢業(yè)論文-于基hash表的班級成員管理數(shù)據(jù)結構課程設計_第4頁
畢業(yè)論文-于基hash表的班級成員管理數(shù)據(jù)結構課程設計_第5頁
已閱讀5頁,還剩16頁未讀, 繼續(xù)免費閱讀

下載本文檔

版權說明:本文檔由用戶提供并上傳,收益歸屬內容提供方,若內容存在侵權,請進行舉報或認領

文檔簡介

6參考文獻[1]高富平,張楚.電子商務法[M].北京:北京大學出版社,2002[2]HuangSC,HuangYM,ShiehSM.Vibrationandstabilityofarotatingshaftcontainingatransersecrack[J],JSoundandVibration,1993,162(3):387-401.[3]譚浩強著.C程序設計(第三版).北京:清華大學出版社,2005[4]數(shù)據(jù)結構:C語言版/嚴蔚敏,吳偉明編著.—北京:清華大學出版社,2007沈陽航空航天大學課程設計報告附錄(關鍵部分程序清單)#include<stdio.h>#include<stdlib.h>#include<string.h>#defineL50//哈希表的長度#defineRAND_MAX10//隨機數(shù)范圍#defineM47//除留取余數(shù)值#defineNAME_NO29//人名的個數(shù)#defineSUCCESS1#defineUNSUCESS0#defineElemTypechartypedefstruct Hash //哈希表{ ElemType*data; ints; //查找長度 intk; //當前姓名的ASCII碼}Hash;Hashhlist[L];typedefstruct DATE //班級成員{char*data; //姓名intk; //姓名ASCII碼}DATA;DATEDATALIST[NAME_NO];voidinput()//姓名(結構體數(shù)組)初始化{char*m;intr,s0,i;DATALIST[0].data="hudi";DATALIST[1].data="lijing";DATALIST[2].data="peiting";DATALIST[3].data="yinhang";DATALIST[4].data="liulu";DATALIST[5].data="lishengnan";DATALIST[6].data="cuililong";DATALIST[7].data="songchongyuan";DATALIST[8].data="xiejinhua";DATALIST[9].data="mashuangmin";DATALIST[10].data="wangjing";DATALIST[11].data="qiyueyu";DATALIST[12].data="gaozhiwei";DATALIST[13].data="fuzedong";DATALIST[14].data="shidailong";DATALIST[15].data="sujun";DATALIST[16].data="zhangxinglei";DATALIST[17].data="liuyang";DATALIST[18].data="liushuxin";DATALIST[19].data="fengkunkun";DATALIST[20].data="suzheng";DATALIST[21].data="sunjianwei";DATALIST[22].data="mengbaiyu";DATALIST[23].data="yushaolong";DATALIST[24].data="lishaolun";DATALIST[25].data="zhangkuo";DATALIST[26].data="wangdanran";DATALIST[27].data="lizhanying";DATALIST[28].data="yangjun";for(i=0;i<NAME_NO;i++) { s0=0;m=DATALIST[i].data;for(r=0;*(m+r)!='\0';r++) s0=*(m+r)+s0; DATALIST[i].k=s0; }}intCreateHashList()//建立哈希表{ inti,num,sum; printf("請選擇沖突處理方法\n"); printf("1.線性探測再散列\(zhòng)n"); printf("2.偽隨機數(shù)探測再散列\(zhòng)n"); scanf("%d",&num); switch(num) { case1:{ for(i=0;i<L;i++) //哈希表的初始化 { hlist[i].data=""; hlist[i].k=0; hlist[i].s=0; } for(i=0;i<L;i++) { sum=0; intadr=(DATALIST[i].k)%M;//哈希函數(shù)(除留取余) if(i==NAME_NO) break; intd=adr; if(hlist[adr].s==0) { hlist[adr].k=DATALIST[i].k; hlist[adr].data=DATALIST[i].data; hlist[adr].s=1; //此處已有數(shù)據(jù) } else { do { d=d+1; //線性探測再散列法處理沖突 sum=sum+1;//查找次數(shù)加1 }while(hlist[d].s!=0); hlist[d].k=DATALIST[i].k; hlist[d].data=DATALIST[i].data; hlist[d].s=sum+1; } } return1; }break; case2:{ for(i=0;i<L;i++) //哈希表的初始化 { hlist[i].data=""; hlist[i].k=0; hlist[i].s=0; } for(i=0;i<L;i++) { sum=0; intadr=(DATALIST[i].k)%M;//哈希函數(shù) if(i==NAME_NO) break; intd=adr; if(hlist[adr].s==0) { hlist[adr].k=DATALIST[i].k; hlist[adr].data=DATALIST[i].data; hlist[adr].s=1; //此處已有數(shù)據(jù) } else { do { srand(DATALIST[i].k); d=(d+rand()%L)%M; //偽隨機數(shù)探測再散列法處理沖突 sum=sum+1;//查找次數(shù)加1 }while(hlist[d].s!=0); hlist[d].k=DATALIST[i].k; hlist[d].data=DATALIST[i].data; hlist[d].s=sum+1; } } return2; }break; }}intSearchHash1(char*name,Hashhlist[],int*k)//k為查找次數(shù),線性探測查找{ ints0=0,r,n=1;for(r=0;*(name+r)!='\0';r++) s0=*(name+r)+s0; intadr=s0%M; if(stricmp(hlist[adr].data,name)==0) { *k=hlist[adr].s; returnSUCCESS; } else { while(1) { if(n>L||strlen(hlist[adr].data)==0) returnUNSUCESS; adr=adr+1; n++; if(stricmp(hlist[adr].data,name)==0) { *k=hlist[adr].s; returnSUCCESS; } } }}intSearchHash2(char*name,Hashhlist[],int*k)//k為查找次數(shù),偽隨機數(shù)探測查找{ ints0=0,r,n=1;//n為初始查找長度for(r=0;*(name+r)!='\0';r++) s0=*(name+r)+s0; intadr=s0%M; if(stricmp(hlist[adr].data,name)==0) { *k=hlist[adr].s; returnSUCCESS; } else { while(1) { if(n>L||strlen(hlist[adr].data)==0) returnUNSUCESS; srand(s0); adr=(adr+rand()%L)%M; n++; if(stricmp(hlist[adr].data,name)==0) { *k=hlist[adr].s; returnSUCCESS; } } }}voidprint(){ printf("%*******************************************\n"); printf("** **\n"); printf("** **\n"); printf("** 哈希表 **\n"); printf("** **\n"); printf("** **\n"); printf("** **\n"); printf("******************************************\n");}voidmain(){ charname[20];intresult=0,m,n;intk;inti=1;//m判斷選擇探測方法 floatc=0,d; while(1) { lp: print(); printf("請選擇:\n"); input(); m=CreateHashList(); printf("請選擇:\n"); printf("1.查找姓名\n"); printf("2.顯示該哈希函數(shù)的平均查找長度\n"); printf("3.退到上級\n"); scanf("%d",&n); switch(n) { case1:{ if(m==1) { printf("請輸入姓名\n"); scanf("%s",name); result=SearchHash1(name,hlist,&k); if(result==1) { printf("查找成功\n"); printf("查找長度為%d\n",k); } else printf("查找失敗\n"); } if(m==2) { printf("請輸入姓名\n"); scanf("%s",name); result=SearchHash2(name,hlist,&k); if(result==1) { printf("查找成功\n"); printf("查找長度為%d\n",k); } else printf("

溫馨提示

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

評論

0/150

提交評論