順序表和單鏈表實(shí)驗(yàn)報(bào)告_第1頁
順序表和單鏈表實(shí)驗(yàn)報(bào)告_第2頁
順序表和單鏈表實(shí)驗(yàn)報(bào)告_第3頁
順序表和單鏈表實(shí)驗(yàn)報(bào)告_第4頁
順序表和單鏈表實(shí)驗(yàn)報(bào)告_第5頁
已閱讀5頁,還剩12頁未讀, 繼續(xù)免費(fèi)閱讀

下載本文檔

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

文檔簡介

.Word文檔數(shù)據(jù)結(jié)構(gòu)實(shí)驗(yàn)報(bào)告一、順序表操作驗(yàn)證1.實(shí)驗(yàn)?zāi)康蘑耪莆站€性表的順序存儲(chǔ)結(jié)構(gòu);⑵驗(yàn)證順序表及其基本操作的實(shí)現(xiàn);⑶掌握數(shù)據(jù)結(jié)構(gòu)及算法的程序?qū)崿F(xiàn)的基本方法。2.實(shí)驗(yàn)內(nèi)容⑴建立含有若干個(gè)元素的順序表;⑵對(duì)已建立的順序表實(shí)現(xiàn)插入、刪除、查找等基本操作。3.設(shè)計(jì)與編碼#include<stdio.h>#include<stdlib.h>#include<malloc.h>structLinearList{ int*list; intsize;intMaxSize;};typedefstructLinearListLIST;voidInitList(LIST*L,intms){ if((L->list=(int*)malloc(ms*sizeof(int)))==NULL){ printf("內(nèi)存申請(qǐng)錯(cuò)誤!\n"); exit(1); } L->size=0; L->MaxSize=ms;}intInsertList(LIST*L,intitem,intrc){inti; if(L->size>=L->MaxSize) return-1; if(rc<0) rc=0; if(rc>L->size) rc=L->size; for(i=L->size-1;i>=rc;i--) L->list[i+1]=L->list[i]; L->list[rc]=item; L->size++; return0;}voidOutputList(LIST*L){ inti; for(i=0;i<L->size;i++) printf("%d",L->list[i]); printf("\n");}intFindList(LIST*L,intitem){ inti; for(i=0;i<L->size;i++) if(item==L->list[i]) returni; return-1;}intDeleteList1(LIST*L,intitem){ inti,n; for(i=0;i<L->size;i++) if(item==L->list[i]) break; if(i<L->size){ for(n=i;n<L->size-1;n++) L->list[n]=L->list[n+1]; L->size--; returni; } return-1;}intDeleteList2(LIST*L,intrc){ inti,n; if(rc<0||rc>=L->size) return-1; for(n=rc;n<L->size-1;n++) L->list[n]=L->list[n+1]; L->size--; return0;}voidmain(){LISTLL;inti,r;printf("listaddr=%p\tsize=%d\tMaxSize=%d\n",LL.list,LL.size,LL.MaxSize);InitList(&LL,100);printf("listaddr=%p\tsize=%d\tMaxSize=%d\n",LL.list,LL.size,LL.MaxSize); while(1) { printf("請(qǐng)輸入元素值,輸入0結(jié)束插入操作:"); fflush(stdin); scanf("%d",&i); if(i==0) break; printf("請(qǐng)輸入插入位置:"); scanf("%d",&r); InsertList(&LL,i,r-1); printf("線性表為:"); OutputList(&LL); } while(1) { printf("請(qǐng)輸入查找元素值,輸入0結(jié)束查找操作:"); fflush(stdin); scanf("%d",&i); if(i==0) break; r=FindList(&LL,i); if(r<0) printf("沒找到\n"); else printf("有符合條件的元素,位置為:%d\n",r+1); } while(1) { printf("請(qǐng)輸入刪除元素值,輸入0結(jié)束查找操作:"); fflush(stdin); scanf("%d",&i); if(i==0) break; r=DeleteList1(&LL,i); if(r<0) printf("沒找到\n"); else{ printf("有符合條件的元素,位置為:%d\n線性表為:",r+1); OutputList(&LL); } } while(1) { printf("請(qǐng)輸入刪除元素位置,輸入0結(jié)束查找操作:"); fflush(stdin); scanf("%d",&r); if(r==0) break; i=DeleteList2(&LL,r-1); if(i<0) printf("位置越界\n"); else{ printf("線性表為:"); OutputList(&LL); } }}4.運(yùn)行結(jié)果單鏈表操作驗(yàn)證1.實(shí)驗(yàn)?zāi)康蘑耪莆站€性表的鏈?zhǔn)酱鎯?chǔ)結(jié)構(gòu);⑵驗(yàn)證單鏈序表及其基本操作的實(shí)現(xiàn);⑶進(jìn)一步掌握數(shù)據(jù)結(jié)構(gòu)及算法的程序?qū)崿F(xiàn)的基本方法。2.實(shí)驗(yàn)內(nèi)容⑴用頭插法(或尾插法)建立帶頭結(jié)點(diǎn)的單鏈表;⑵對(duì)已建立的單鏈表實(shí)現(xiàn)插入、刪除、查找等基本操作。3.設(shè)計(jì)與編碼#include<stdio.h>#include<malloc.h>typedefstructlist{ intdata; structlist*next;}LIST;voidInitList(LIST**p){ *p=NULL;}voidInsertList1(LIST**p,intitem,intrc){ inti; LIST*u,*q,*r; u=(LIST*)malloc(sizeof(LIST)); u->data=item; for(i=0,r=*p;i<rc&&r!=NULL;i++){ q=r; r=r->next; } if(r==*p) *p=u; else q->next=u; u->next=r;}voidInsertList2(LIST**p,intitem){ LIST*u,*q,*r; u=(LIST*)malloc(sizeof(LIST)); u->data=item; for(r=*p;r!=NULL&&r->data<item;q=r,r=r->next); if(r==*p) *p=u; else q->next=u; u->next=r;}intDeleteList(LIST**p,intitem){ LIST*q,*r; q=*p;r=q; if(q==NULL) return1; if(q->data==item){ *p=q->next; free(r); return0; } for(;q->data!=item&&q->next!=NULL;r=q,q=q->next); if(q->data==item){ r->next=q->next; free(q); return0; } return1;}intFindList(LIST*p,intitem){ inti; for(i=1;p->data!=item&&p!=NULL;p=p->next,i++); return(p==NULL)?-1:i;}voidOutputList(LIST*p){ while(p!=NULL){ printf("%4d",p->data); p=p->next; } printf("\n");}voidFreeList(LIST**p){ LIST*q,*r; for(q=*p;q!=NULL;){ r=q; q=q->next; free(r); } *p=NULL;}intmain(){ LIST*p; intop,i,rc; InitList(&p); while(1) { printf("請(qǐng)選擇操作1:指定位置追加2:升序追加3:查找結(jié)點(diǎn)\n"); printf("4:刪除結(jié)點(diǎn)5:輸出結(jié)點(diǎn)6:清空鏈表0:退出\n"); fflush(stdin); scanf("%d",&op); switch(op){ case0: return-1; case1: printf("請(qǐng)輸入新增結(jié)點(diǎn)鍵值和位置:"); scanf("%d%d",&i,&rc); InsertList1(&p,i,rc); break; case2: printf("請(qǐng)輸入新增結(jié)點(diǎn)鍵值:"); scanf("%d",&i); InsertList2(&p,i); break; case3: printf("請(qǐng)輸入要查找結(jié)點(diǎn)的鍵值:"); scanf("%d",&i); rc=FindList(p,i); if(rc>0) printf("位置為[%d]\n",rc); else printf("沒找到\n"); break; case4: printf("請(qǐng)輸入要?jiǎng)h除結(jié)點(diǎn)的鍵值:"); scanf("%d",&i); rc=DeleteList(&p,i); if(rc==0) printf("刪除成功\n",rc); else printf("沒找到\n"); break; case5: pr

溫馨提示

  • 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請(qǐng)下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請(qǐng)聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
  • 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會(huì)有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
  • 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
  • 5. 人人文庫網(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)論