版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進(jìn)行舉報或認(rèn)領(lǐng)
文檔簡介
、掌握現(xiàn)實(shí)復(fù)雜問題的分析建模和解決方法(包括題的基本能力。①讀取原電話本存儲的電話信息。2)查找信息①根據(jù)電話號碼查詢用戶信息。②根據(jù)姓名查詢用戶信息。3)存儲信息查詢無記錄的結(jié)果存入記錄文檔。2)數(shù)據(jù)文件“new.txt”存放有系統(tǒng)隨機(jī)生成的3)數(shù)據(jù)文件“out.txt”存放未查找到的電話信1)從數(shù)據(jù)文件“old.txt”中讀入各項(xiàng)記錄,或由系統(tǒng)隨機(jī)產(chǎn)生各記錄,并且把記錄保存到“new.txt”中。2)分別采用偽隨機(jī)探測再散列法和再哈希法解3)根據(jù)姓名查找時顯示給定姓名用戶的記錄。4)根據(jù)電話號碼查找時顯示給定電話號碼的用t序以用戶和計算機(jī)的對話方式進(jìn)行。intCollision_Random(intkey,inti)//偽隨機(jī)數(shù)探量觀測再散列法處理沖突voidInit_HashTable_by_name(stringname,stringphone,stringaddress)//以姓名為關(guān)鍵字建立哈希表intCollision_Rehash(intkey,string//再哈希法處理沖突voidInit_HashTable_by_phone(stringname,stringphone,stringaddress)//以電話號碼為關(guān)鍵字建立哈希表voidOutfile(stringname,intkey)//在沒有找到時輸出未找到的記錄,打開voidOuthash(intkey)//輸出哈希表中的記錄init-hashtable-by-name()Seach-by-phone()Collision-rehash()init-hashtable-by-name()Seach-by-phone()Collision-rehash()voidRafile()//隨機(jī)生成數(shù)據(jù),并將數(shù)據(jù)保存在new.txtvoidInit_HashTable(char*fname,intn)希表intSearch_by_name(stringname)//根據(jù)姓名查找哈希表中的記錄intSearch_by_phone(stringphone)//根據(jù)電話號碼查找哈希表中的記錄main()Refile()init-hashtable()init-hashtable-by-phone()Seach-by-name()Coiiision-random()Outhash()01 2電話號碼查找1221輸入電話號碼顯示哈希表顯示哈希表輸入姓名無此記錄顯示信息顯示信息無此記錄0寫入“out.txt”寫入“out.txt”001 2電話號碼查找1221輸入電話號碼顯示哈希表顯示哈希表輸入姓名無此記錄顯示信息顯示信息無此記錄0寫入“out.txt”寫入“out.txt”0開始開始 2選擇數(shù)據(jù)來 2建建“new.txt”選擇查找方選擇查找方式11姓名查找姓名查找結(jié)結(jié)束鍵字=(原關(guān)鍵字+偽隨機(jī)數(shù))%哈希表長。nery為關(guān)鍵字,分別為前四位、中四位、后三位。再用“除留余數(shù)法”求的新的關(guān)鍵字=原關(guān)表長。沖突,然后將數(shù)據(jù)存入哈希表。數(shù)據(jù)存入哈希表。、哈誤。修改后程序運(yùn)行正確。但是原數(shù)據(jù)是從“old.txt”文件中讀取的,剛參考書的幫助下終于得到解決。3、關(guān)于偽隨機(jī)和再哈希的相關(guān)內(nèi)容覺得很難懂,看了很久參考書才有所了解六測試結(jié)果2)姓名查找失敗)哈希表4)哈希表ry用說明“old.txt”文件中的數(shù)據(jù)或系統(tǒng)當(dāng)前自動生成的“new.txt”文件。ry或“根據(jù)電話號碼查找”兩種查找方式。ryryryryry時鍛煉了對話形式的菜單的創(chuàng)建和熟練運(yùn)用。ry在這次數(shù)據(jù)結(jié)構(gòu)設(shè)計中遇到了很多實(shí)際性礎(chǔ)慢慢開始弄懂它。ry#include<fstream>#include<iostream>#include<string>usingnamespacestd;ofstreamout_file;D[10]={1,3,5,8,13,15,17,21,27,34};//偽隨intcountintsizeindex度char*sign;//沖突的標(biāo)志{ryress};Data*intermediate_data;{key{Re_key=(key+D[i])%sizeindex;returnRe_key;//歸回新的要害碼}return-1;}voidInit_HashTable_by_name(stringname,stringphone,stringaddress)//以姓名為關(guān)鍵字建立哈希表{for(key=0,p=&name[0];*p;p++)key=key+*p;key=key%42;while(sign[key]=='1')ry{key=Collision_Random(key,i+1);}intermediate_data[key].name=name;//將intermediate_data[key].address=addresintermediate_data[key].phone=phone;sign[key]='1';//設(shè)置沖突標(biāo)志}intCollision_Rehash(intkey,stringr{num1=(str[0]-'0')*1000+(str[1]-'0')*100+(str[2]-'0')*10+(str[3]-'0');num2=(str[4]-'0')*1000+(str[5]-'0')*100+(str[6]-'0')*10+(str[7]-'0');num3=(str[8]-'0')*100+(str[9]-'0')*10+(str[10]-'0');Re_key=num1+num2+num3;Re_key=(Re_key+key)%sizeindex;returnRe_key;ry}voidInit_HashTable_by_phone(stringname,stringphone,stringaddress)//以電話號碼為關(guān)鍵字建立哈希表{for(key=0,p=&phone[0];*p;p++)key=key+*p;key=key%42;while(sign[key]=='1'){key=Collision_Rehash(key,phone);}intermediate_data[key].name=name;intermediate_data[key].address=addresintermediate_data[key].phone=phone;ey}voidOutfile(stringname,intkey)//在沒有找到時輸出未找到的記錄,打開文件{ry{{cout<<"\n"<<"文件打開失敗!!!\n"<<endl;}out_file<<name<<endl;out_file.close();}}voidOuthash(intkey)//輸出哈希表中的{unsignedi;{cout<<"\n"<<"無此記錄!!!\n"<<endl;}{for(i=0;i<strlen(&(intermediate_data[key].name[0]));i++)cout<<intermediate_data[key].name[i];ryfor(i=0;i<8;i++)cout<<intermediate_data[key].phone;for(i=0;i<8;i++)cout<<intermediate_data[key].address<<e}}voidRafile()//隨機(jī)生成數(shù)據(jù),并將數(shù)據(jù){{cout<<"\n"<<"文件打開失敗!!!\n"<<endl;}for(j=0;j<30;j++){namefor(i=0;i<20;i++)name+=rand()%26+'a';out_file<<name<<"";ngphoneryfor(i=0;i<11;i++)phone+=rand()%10+'0';out_file<<phone<<"";tringaddressfor(i=0;i<29;i++)address+=rand()%26+'a';address+=',';out_file<<address<<endl;}out_file<<"*";out_file.close();}voidInit_HashTable(char*fname,intn)//建立哈希表{namengphonetringaddress{cout<<"\n"<<"文件打開失敗!!!\n"<<endl;}while(!in_file.eof()){rychar*str=newchar[100];name";phone="";address";in_file.getline(str,100,'\n');//按ifstr*')//判斷數(shù)據(jù)結(jié)束reakfor(;str[i]!='';i++)name+=str[i];while(str[i]=='')for(j=0;str[i]!='';j++,i++)phone+=str[i];while(str[i]=='')for(j=0;str[i]!=',';j++,i++)address+=str[i];Init_HashTable_by_name(name,phone,addreelseInit_HashTable_by_phone(name,phone,address);//以電話號碼為關(guān)鍵字str}ry}intSearch_by_name(stringname)//根據(jù)姓名查找哈希表中的記錄{for(key=0,p=&name[0];*p;p++)key=key+*p;key=key%42;while(sign[key]=='1'&&(intermediate_data[key].name!=name)){key=Collision_Random(key,i+1);return-1;}returnkey;}intSearch_by_phone(stringphone)//根據(jù)電話號碼查找哈希表中的記錄{ryfor(key=0,p=&phone[0];*p;p++)key=key+*p;key=key%42;while(sign[key]=='1'&&(intermediate_data[key].phone!=phone)){key=Collision_Rehash(key,phone);return-1;}returnkey;}voidmain(){rFnamesign=newchar[sizeindex];iatedatanewData[sizeindex];ryfor(i=0;i<sizeindex;i++)for(i=0;i<sizeindex;i++){intermediate_data[i].name="";intermediate_data[i].phone="";intermediate_data[i].address="";}cout<<"§**********************************************************§"<<endl;*§"<<endl;*§"<<endl;*§"<<endl;cout<<"§*隨機(jī)生成cout<<"§*退出程序*§"<<endl;*§"<<endl;*§"<<endl;cout<<"§**********************************************************§"<<endl;ry{cout<<"\n"<<"請輸入選擇:\n";{turnFname="old.txt";reakRafile();Fname="new.txt";reakcout<<"輸入序號有誤,請重新輸入!!!\n"<<endl;}}while((k!=1)&&(k!=2)&&(k!=0));//system("cls");cout<<"§**********************************************************§"<<endl;ry*§"<<endl;查找方式*§"<<endl;據(jù)姓名查找據(jù)電話號查找*§"<<endl;*§"<<endl;cout<<"§**********************************************************§"<<endl;{cout<<"\n"<<"請輸入選擇:\n";{cout<<"輸入序號有誤,請重新輸入!!!\n"<<endl;}}while((ch!=1)&&(ch!=2));//system("cls");ryInit_HashTable(Fname,ch);while(ch==1){cout<<"§**********************************************************§"<<endl;*§"<<endl;cout<<"§*擇功能"<<endl;cout<<"§**§"<<endl;希表cout<<"§**§"<<endl;*§"<<endl;*§"<<endl;*§"<<endl;cout<<"§**********************************************************§"<<endl;{rychoicece{{cout<<"\n"<<"請輸入姓名:\n";key1=Search_by_name(name);Outfile(name,key1);n<endl;cout"\n"<<"查找Outhash(key1);}reak{表:\n"<<endl;for(i=0;i<sizeindex;i++){{ryoutOuthash(i);}}cout<<"**"<<endl;}reakturn輸入!!!\n"<<endl;}}while((choice!=1)&&(choice!=2)&&(cho
溫馨提示
- 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)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 裝修糾紛裝飾補(bǔ)充協(xié)議范本
- 技術(shù)合作合同書
- 高中數(shù)學(xué) 8.2.3 二項(xiàng)分布(2)教學(xué)設(shè)計 蘇教版選擇性必修第二冊
- 2024年高中地理 第4章 文明旅游 4.4 旅游安全教案 湘教版選修3
- 2024年八年級生物下冊 6.1.2生物對環(huán)境的適應(yīng)和影響教學(xué)設(shè)計 (新版)濟(jì)南版
- 2023七年級數(shù)學(xué)上冊 第4章 圖形的初步認(rèn)識4.1 生活中的立體圖形教案 (新版)華東師大版
- 2024-2025版高中物理 第四章 電磁感應(yīng) 5 電磁感應(yīng)現(xiàn)象的兩類情況教案 新人教版選修3-2
- 總部園區(qū)基地物業(yè)管理合同(2篇)
- 銀行防控風(fēng)險合同(2篇)
- 湘教版福建省福州市八縣(市、區(qū))一中2023-2024學(xué)年高一上學(xué)期11月期中聯(lián)考數(shù)學(xué)試題
- Lesson19MeetLiMing'sfamily(課件)冀教版英語五年級上冊
- 中英文旅游合同范本
- 意識形態(tài)學(xué)習(xí)方案范文三篇
- 六年級數(shù)學(xué)上冊蘇教版導(dǎo)學(xué)案
- 水汽品質(zhì)劣化的原因及其處理方法
- The call of the wild(野性的呼喚)課件
- 2023年軍隊(duì)文職人員(數(shù)學(xué)3+化學(xué))科目考試題庫(濃縮500多題)
- 小眼睛大手術(shù)-眼科顯微手術(shù)技能知到章節(jié)答案智慧樹2023年溫州醫(yī)科大學(xué)
- 2023石景山區(qū)高三一模數(shù)學(xué)試卷
- 供應(yīng)商管理庫存VMI
- 國網(wǎng)基建各專業(yè)考試題庫大全-質(zhì)量專業(yè)-下(判斷題匯總)
評論
0/150
提交評論