




版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進(jìn)行舉報或認(rèn)領(lǐng)
文檔簡介
實(shí)驗(yàn)報告課程數(shù)據(jù)結(jié)構(gòu)及算法試驗(yàn)項(xiàng)目8.查找成績專業(yè)班級***指導(dǎo)教師***姓名***學(xué)號***試驗(yàn)日期***試驗(yàn)八查找一、試驗(yàn)?zāi)繕?biāo)掌握次序表查找中不一樣查找方法查找思想,并能用C/C++語言實(shí)現(xiàn)。掌握樹表查找中二叉排序樹查找、平衡二叉樹查找查找思想,并能用C/C++語言實(shí)現(xiàn)。掌握Hash表查找中查找思想,并能用C/C++語言實(shí)現(xiàn)。能夠針對詳細(xì)實(shí)際,靈活選取適宜查找方法。二、試驗(yàn)環(huán)境PC微機(jī),Windows,DOS,TurboC或VisualC++三、試驗(yàn)內(nèi)容1、二叉排序樹查找(1)問題描述查找是計(jì)算機(jī)操作中一個主要應(yīng)用技術(shù),查找方法有許多,不一樣查找方法有不一樣查找效率,而二叉排序樹查找就是效率較高查找方法之一。所謂二叉排序樹,就是指將原來已經(jīng)有數(shù)據(jù)依照大小組成一棵二叉樹,二叉樹中全部結(jié)點(diǎn)數(shù)據(jù)滿足一定大小關(guān)系,全部左子樹中結(jié)點(diǎn)均比根結(jié)點(diǎn)小,全部右子樹中結(jié)點(diǎn)均比根結(jié)點(diǎn)大。二叉排序樹查找是指按照二叉排序樹中結(jié)點(diǎn)關(guān)系進(jìn)行查找,查找關(guān)鍵字首先同樹根結(jié)點(diǎn)進(jìn)行比較,假如相等則查找成功;假如比根結(jié)點(diǎn)小,則在左子樹中查找;假如比根結(jié)點(diǎn)大,則在右子樹中進(jìn)行查找。這種查找方法能夠快速縮小查找范圍,大大降低了查找關(guān)鍵字比較次數(shù),從而提升了查找效率。(2)基本要求編程實(shí)現(xiàn)時,表現(xiàn)查找全過程,即二叉排序樹創(chuàng)建、查找關(guān)鍵字輸入、查找關(guān)鍵字查找、查找結(jié)果輸出等。(3)算法實(shí)現(xiàn)#include<stdio.h>#include<stdlib.h>voidGetemptylist();//建立空樹voidGetlist();//建立二叉排序樹voidSortL();//排序voidConnectlist();//結(jié)點(diǎn)連接處理voidLookup();//查找typedefstructlist{intdata;structlist*left; structlist*right;}JD;JD*head;intL[20];intsize;intnum;intmain(){ Getemptylist(); Getlist(); Lookup(); return0;}//+*voidGetemptylist(){ printf("建立空樹:\n"); head=(JD*)malloc(sizeof(JD)); head->left=NULL; head->right=NULL; if(!head) { printf("建立失??!\n"); exit(-1); } else { printf("建立成功!\n"); }}voidGetlist(){ inti; printf("建立二叉排序樹:\n"); printf("請輸入元素個數(shù):"); scanf("%d",&size); printf("請輸入元素:"); for(i=0;i<size;i++) { scanf("%d",&(L[i])); } SortL(); printf("二叉排序樹建立中。。。。\n"); Connectlist();}voidSortL(){ inti,j; intmin; for(i=0;i<size;i++) { min=L[i]; for(j=i+1;j<size;j++) { if(L[j]<min) { min=L[j]; L[j]=L[i]; L[i]=min; } } } printf("排序后:"); for(i=0;i<size;i++) { printf("%d",L[i]); } printf("\n");}voidConnectlist(){ intlow,high,mid; inti; JD*p,*q; p=(JD*)malloc(sizeof(JD)); p->left=NULL; p->right=NULL; low=0; high=size; mid=(low+high)/2; head->data=L[mid]; q=head; for(i=0;i<size;i++) { q=head;A1: if(L[i]<q->data) { if(q->left==NULL) { p->data=L[i]; q->left=p; p=(JD*)malloc(sizeof(JD)); p->left=NULL; p->right=NULL; } else { q=q->left; gotoA1; } } else { if(q->right==NULL) { p->data=L[i]; q->right=p; p=(JD*)malloc(sizeof(JD)); p->left=NULL; p->right=NULL; } else { q=q->right; gotoA1; } } } if(head->left==NULL&&head->right==NULL) { printf("二叉排序樹建立失??!\n"); } else { printf("二叉排序樹建立成功!\n"); }}voidLookup(){ inti; JD*q; printf("請輸入查找元素:"); scanf("%d",&num); q=head; for(;;) { if(num==q->data) { printf("查找成功,此元素為:%d,地址為:%d\n",q->data,q); break; } else { if(num<q->data) { if(q->left==NULL) { printf("查找失敗,無此元素\n"); break; } else { q=q->left; } } else { if(q->right==NULL) { printf("查找失敗,無此元素\n"); break; } else { q=q->right; } } } }}(4)運(yùn)行截圖2、通訊錄管理(1)問題描述試編程完成通訊錄通常性管理工作,如通訊錄中統(tǒng)計(jì)增加、修改、查找、刪除、輸出等功效。每個統(tǒng)計(jì)包含姓名、電話號碼、住址等個人基本信息。(2)基本要求將建立通訊錄以磁盤文件形式存放,全部通訊錄管理均以文件操作方式進(jìn)行。在查找通訊錄中統(tǒng)計(jì)時,以統(tǒng)計(jì)“姓名”為查找關(guān)鍵字進(jìn)行查找。因?yàn)椤靶彰笔亲址愋蛿?shù)據(jù),其查找過程比整形關(guān)鍵字查找過程要復(fù)雜,關(guān)鍵字比較過程可調(diào)用字符串函數(shù),也能夠自己實(shí)現(xiàn)其比較過程。算法實(shí)現(xiàn)#include<stdio.h>#include<stdlib.h>#include<string.h>#definesize50voidGetemptylist();//建立空表voidIncrease();//增加voidModify();//修改voidLookup();//查找voidDelete();//刪除voidSee();//查看voidformat();//格式化typedefstructlist{charname[size];//姓名chartelenum[size];//電話charaddress[size];//地址}JD;JDUser[size];intmain(){inta;Getemptylist();A1:printf("請選擇操作:\n1.增加2.修改\n3.查找4.刪除\n5.查看6.退出\n7.格式化\n");scanf("%d",&a);switch(a){case1:Increase();break;//增加case2:Modify();break;//修改case3:Lookup();break;//查找case4:Delete();break;//刪除case5:See();break;//查看case6:exit(1);break;//退出case7:format();break;default:printf("inputerror!\n");}gotoA1; return0;}//+*voidGetemptylist(){ printf("建立空表:\n"); if(!User) { printf("建立失敗!\n"); exit(-1); } else { printf("建立成功!\n"); }}voidIncrease(){FILE*fp;inti=0;printf("請輸入姓名:");scanf("%s",User[i].name);printf("請輸入電話:");scanf("%s",User[i].telenum);printf("請輸入地址:");scanf("%s",User[i].address);fp=fopen("D:\\通訊錄.txt","a");fprintf(fp,"%6s%11s%6s",User[i].name,User[i].telenum,User[i].address);fclose(fp);printf("添加成功!\n");}voidModify(){FILE*fp;chara[size];inti,j;intx=1;fp=fopen("D:\\通訊錄.txt","r");for(i=0;i<5;i++){fscanf(fp,"%6s%11s%6s",User[i].name,User[i].telenum,User[i].address);}fclose(fp);printf("請輸入需要修改聯(lián)絡(luò)人姓名:");scanf("%s",a);for(i=0;i<5;i++){x=1;for(j=0;j<strlen(a)||j<strlen(User[i].name);j++){if(a[j]!=User[i].name[j]){x=0;break;}}if(x==1){printf("請輸入修改后姓名:");scanf("%s",User[i].name);printf("請輸入修改后電話:");scanf("%s",User[i].telenum);printf("請輸入修改后地址:");scanf("%s",User[i].address);printf("修改成功!修改后:\n");printf("姓名電話地址\n");printf("%6s%11s%6s\n",User[i].name,User[i].telenum,User[i].address);break;}}if(x==1){fp=fopen("D:\\通訊錄.txt","w");for(i=0;i<5;i++){fprintf(fp,"%6s%11s%6s",User[i].name,User[i].telenum,User[i].address);}fclose(fp);}if(x==0){printf("無此聯(lián)絡(luò)人!\n");}}voidLookup(){FILE*fp;chara[size];inti,j;intx=1;fp=fopen("D:\\通訊錄.txt","r");for(i=0;i<5;i++){fscanf(fp,"%6s%11s%6s",User[i].name,User[i].telenum,User[i].address);}fclose(fp);printf("請輸入想要查找聯(lián)絡(luò)人姓名:");scanf("%s",a);for(i=0;i<5;i++){x=1;for(j=0;j<strlen(a)||j<strlen(User[i].name);j++){if(a[j]!=User[i].name[j]){x=0;break;}}if(x==1){printf("查找成功!\n");printf("姓名電話地址\n");printf("%6s%11s%6s\n\n",User[i].name,User[i].telenum,User[i].address);break;}}if(x==0){printf("無此聯(lián)絡(luò)人!\n");}}voidDelete(){FILE*fp;JDmax[size];chara[size];inti,j,k;intx=1;fp=fopen("D:\\通訊錄.txt","r");for(i=0;i<5;i++){fscanf(fp,"%6s%11s%6s",User[i].name,User[i].telenum,User[i].address);}fclose(fp);printf("請輸入想要刪除聯(lián)絡(luò)人姓名:");scanf("%s",a);for(i=0;i<5;i++){x=1;for(j=0;j<strlen(a)||j<strlen(User[i].name);j++){if(a[j]!=User[i].name[j]){x=0;break;}}if(x==1){k=0;for(j=0;j<size;j++){if(j==i){j++;}strcpy(max[k].name,User[j].name);strcpy(max[k].address,User[j].address);strcpy(max[k].telenum,User[j].telenum);k++;}for(j=0;j<size;j++){strcpy(User[j].name,max[j].name);strcpy(User[j].address,max[j].address);strcpy(User[j].telenum,max[j].telenum);}printf("刪除成功!\n");break;}}if(x==1){fp=fopen("D:\\通訊錄.txt","w");
溫馨提示
- 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)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 二零二五年度裝修質(zhì)量保證與業(yè)主滿意度調(diào)查合同
- 2025年度汽車租賃與共享出行模式合作合同
- 二零二五年度子女自愿離婚協(xié)議書范本及婚姻關(guān)系解除后續(xù)服務(wù)
- 二零二五年度廚師個人與餐廳老板兼職協(xié)議
- 二零二五年度校園班車接送服務(wù)合同及學(xué)生安全培訓(xùn)協(xié)議
- 2025年度電子商務(wù)公司固定期限雇傭員工勞動合同
- 二零二五年度醫(yī)院體檢中心與醫(yī)療機(jī)構(gòu)合作開展健康風(fēng)險評估協(xié)議
- 二零二五年度房屋買賣合同租賃權(quán)糾紛起訴狀
- 二零二五年度財產(chǎn)保留型離婚協(xié)議書模板
- 二零二五年度凈水器售后服務(wù)與維修合作協(xié)議
- 復(fù)變函數(shù)論 鐘玉泉 第四版 課后習(xí)題答案詳解解析
- 焊接與熱切割作業(yè)實(shí)操培訓(xùn)
- 《學(xué)習(xí)地圖》課件
- 尿源性膿毒血癥護(hù)理
- 日本留學(xué)中介簽約合同
- 《地區(qū)智能電網(wǎng)調(diào)度技術(shù)支持系統(tǒng)應(yīng)用功能規(guī)范》
- 框架借款協(xié)議書(2篇)
- 物業(yè)防恐防暴演練課件
- 古詩詞誦讀《李憑箜篌引》 公開課一等獎創(chuàng)新教案統(tǒng)編版高中語文選擇性必修中冊
- DB12-T 3034-2023 建筑消防設(shè)施檢測服務(wù)規(guī)范
- 銷售人員崗位職責(zé)培訓(xùn)
評論
0/150
提交評論