數(shù)據(jù)結(jié)構(gòu)實(shí)驗(yàn)1順序表-鏈表_第1頁
數(shù)據(jù)結(jié)構(gòu)實(shí)驗(yàn)1順序表-鏈表_第2頁
數(shù)據(jù)結(jié)構(gòu)實(shí)驗(yàn)1順序表-鏈表_第3頁
數(shù)據(jù)結(jié)構(gòu)實(shí)驗(yàn)1順序表-鏈表_第4頁
數(shù)據(jù)結(jié)構(gòu)實(shí)驗(yàn)1順序表-鏈表_第5頁
已閱讀5頁,還剩9頁未讀 繼續(xù)免費(fèi)閱讀

下載本文檔

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

文檔簡介

文檔收集于互聯(lián)網(wǎng),已重新整理排版.word版本可編輯.歡迎下載支持.數(shù)據(jù)結(jié)構(gòu)實(shí)驗(yàn)1順序表-鏈表文檔來源為:從網(wǎng)絡(luò)收集整理.word版本可編輯.PAGE1文檔來源為:從網(wǎng)絡(luò)收集整理.word版本可編輯.文檔收集于互聯(lián)網(wǎng),已重新整理排版.word版本可編輯.歡迎下載支持.文檔來源為:從網(wǎng)絡(luò)收集整理.word版本可編輯.淮海工學(xué)院計(jì)算機(jī)科學(xué)系實(shí)驗(yàn)報(bào)告書課程名:《數(shù)據(jù)結(jié)構(gòu)》題目:線性表數(shù)據(jù)結(jié)構(gòu)試驗(yàn)班級(jí):軟件112學(xué)號(hào):姓名:數(shù)據(jù)結(jié)構(gòu)實(shí)驗(yàn)1順序表-鏈表全文共14頁,當(dāng)前為第1頁。評(píng)語:數(shù)據(jù)結(jié)構(gòu)實(shí)驗(yàn)1順序表-鏈表全文共14頁,當(dāng)前為第1頁。評(píng)語:成績:指導(dǎo)教師:批閱時(shí)間:年月日線性表實(shí)驗(yàn)報(bào)告要求1目的與要求:1)掌握線性表數(shù)據(jù)結(jié)構(gòu)的基本概念和抽象數(shù)據(jù)類型描述;2)熟練掌握線性表數(shù)據(jù)結(jié)構(gòu)的順序和鏈?zhǔn)酱鎯?chǔ)存表示;3)熟練掌握線性表順序存儲(chǔ)結(jié)構(gòu)的基本操作算法實(shí)現(xiàn);4)熟練掌握線性表的鏈?zhǔn)酱鎯?chǔ)結(jié)構(gòu)的基本操作算法實(shí)現(xiàn);5)掌握線性表在實(shí)際問題中的應(yīng)用和基本編程技巧;6)按照實(shí)驗(yàn)題目要求獨(dú)立正確地完成實(shí)驗(yàn)內(nèi)容(提交程序清單及相關(guān)實(shí)驗(yàn)數(shù)據(jù)與運(yùn)行結(jié)果);7)按照?qǐng)?bào)告格式和內(nèi)容要求,認(rèn)真書寫實(shí)驗(yàn)報(bào)告,并在試驗(yàn)后的第三天提交電子(全班同學(xué)提交到學(xué)委,再統(tǒng)一打包提交給老師)和紙質(zhì)(每班每次5份,學(xué)委安排,保證每個(gè)同學(xué)至少提交一次);8)積極開展實(shí)驗(yàn)組組內(nèi)交流和輔導(dǎo),嚴(yán)禁復(fù)制和剽竊他人實(shí)驗(yàn)成果,一旦發(fā)現(xiàn)嚴(yán)肅處理;9)上實(shí)驗(yàn)課前,要求每個(gè)同學(xué)基本寫好程序,并存儲(chǔ)在自己的U盤上,用于實(shí)驗(yàn)課堂操作時(shí)調(diào)試和運(yùn)行。凡不做準(zhǔn)備,沒有提前編寫程序者,拒絕上機(jī)試驗(yàn)。2實(shí)驗(yàn)內(nèi)容或題目一、順序表的基本操作實(shí)現(xiàn)實(shí)驗(yàn)要求:數(shù)據(jù)元素類型ElemType取整型int。按照順序存儲(chǔ)結(jié)構(gòu)實(shí)現(xiàn)如下算法:1)創(chuàng)建任意整數(shù)線性表(即線性表的元素值隨機(jī)在鍵盤上輸入)的順序存儲(chǔ)結(jié)構(gòu)(即順序表),長度限定在25之內(nèi);2)打印/顯示(遍歷)該線性表(依次打印/顯示出表中元素值);3)在順序表中查找第i個(gè)元素,并返回其值;4)在順序表第i個(gè)元素之前插入一已知元素;5)在順序表中刪除第i個(gè)元素;6)求順序表中所有元素值(整數(shù))之和;二、鏈表(帶頭結(jié)點(diǎn))基本操作實(shí)驗(yàn)要求:數(shù)據(jù)元素類型ElemType取字符型char。按照動(dòng)態(tài)單鏈表結(jié)構(gòu)實(shí)現(xiàn)如下算法:1)按照頭插法或尾插法創(chuàng)建一個(gè)帶頭結(jié)點(diǎn)的字符型單鏈表(鏈表的字符元素從鍵盤輸入),長度限定在10之內(nèi);2)打?。ū闅v)該鏈表(依次打印出表中元素值,注意字符的輸入順序與鏈表的結(jié)點(diǎn)順序);3)在鏈表中查找第i個(gè)元素,i合法返回元素值,否則,返回FALSE;4)在鏈表中查找與一已知字符相同的第一個(gè)結(jié)點(diǎn),有則返回TRUE,否則,返回FALSE;5)在鏈表中第i個(gè)結(jié)點(diǎn)之前插入一個(gè)新結(jié)點(diǎn);6)在線性表中刪除第i個(gè)結(jié)點(diǎn);數(shù)據(jù)結(jié)構(gòu)實(shí)驗(yàn)1順序表-鏈表全文共14頁,當(dāng)前為第2頁。7)計(jì)算鏈表的長度。數(shù)據(jù)結(jié)構(gòu)實(shí)驗(yàn)1順序表-鏈表全文共14頁,當(dāng)前為第2頁。3實(shí)驗(yàn)步驟與源程序#include<iostream>#defineOK1#defineERROR0#defineTRUE1#defineFALSE0#defineElemTypeint#define MAXSIZE25/*此處的宏定義常量表示線性表可能達(dá)到的最大長度*/usingnamespacestd;typedefstruct{ ElemTypeelem[MAXSIZE];/*線性表占用的數(shù)組空間*/ intlast;/*記錄線性表中最后一個(gè)元素在數(shù)組elem[]中的位置(下標(biāo)值),空表置為-1*/}SeqList;voidOutputSeqList(SeqList*L){ cout<<"順序表如下:"<<endl; inti; for(i=0;i<=L->last;i++) cout<<L->elem[i]<<'\n'; cout<<endl;}intGetDate(SeqList*L){ intt; cout<<"請(qǐng)輸入要查找的元素的序數(shù):"<<endl;cin>>t;if((t<0)||(t>L->last)) {數(shù)據(jù)結(jié)構(gòu)實(shí)驗(yàn)1順序表-鏈表全文共14頁,當(dāng)前為第3頁。 cout<<"輸入錯(cuò)誤!";數(shù)據(jù)結(jié)構(gòu)實(shí)驗(yàn)1順序表-鏈表全文共14頁,當(dāng)前為第3頁。 return(ERROR); }elsereturn(L->elem[t-1]);}intInsList(SeqList*L){ inti,e; cout<<"請(qǐng)輸入要插入的元素插入位置及要插入的元素"<<endl;cin>>i>>e; intk; if((i<1)||(i>L->last+2))/*首先判斷插入位置是否合法*/ { printf("插入位置i值不合法"); return(ERROR); } if(L->last>=MAXSIZE-1) { printf("表已滿無法插入"); return(ERROR); } for(k=L->last;k>=i-1;k--)/*為插入元素而移動(dòng)位置*/ L->elem[k+1]=L->elem[k]; L->elem[i-1]=e;/*在C語言數(shù)組中,第i個(gè)元素的下標(biāo)為i-1*/ L->last++; return(OK);}intDelList(SeqList*L,ElemType*m){ intw; cout<<"請(qǐng)輸出要?jiǎng)h除的元素位置:"<<endl;數(shù)據(jù)結(jié)構(gòu)實(shí)驗(yàn)1順序表-鏈表全文共14頁,當(dāng)前為第4頁。cin>>w;數(shù)據(jù)結(jié)構(gòu)實(shí)驗(yàn)1順序表-鏈表全文共14頁,當(dāng)前為第4頁。 intk; if((w<1)||(w>L->last+1)) { cout<<"刪除位置不合法!"<<endl;; return(ERROR); } *m=L->elem[w-1];/*將刪除的元素存放到e所指向的變量中*/ for(k=w;k<=L->last;k++) L->elem[k-1]=L->elem[k];/*將后面的元素依次前移*/ L->last--; return(OK);}intsum(SeqList*L){ inti,n=0; for(i=0;i<L->last+1;i++) n=n+L->elem[i]; return(n);}voidmain(){ int*q,n; SeqList *L;L=(SeqList*)malloc(sizeof(SeqList));q=(int*)malloc(sizeof(int)); cout<<"請(qǐng)輸入順序表長度:"; cin>>n; L->last=n-1; cout<<"請(qǐng)輸入順序表:"<<endl; inti;數(shù)據(jù)結(jié)構(gòu)實(shí)驗(yàn)1順序表-鏈表全文共14頁,當(dāng)前為第5頁。for(i=0;i<n;i++)數(shù)據(jù)結(jié)構(gòu)實(shí)驗(yàn)1順序表-鏈表全文共14頁,當(dāng)前為第5頁。 cin>>L->elem[i]; charc='y'; while(c!='n') { cout<<"請(qǐng)選擇你要進(jìn)行的操作:"<<endl; cout<<"1.輸出順序表;"<<'\n'<<"2.查找元素;"<<'\n'<<"3.插入元素;"<<'\n'<<"4.刪除元素;"<<'\n'<<"5.求和"<<endl; intxuanze; cin>>xuanze; switch(xuanze) { case1:OutputSeqList(L);break; case2:cout<<GetDate(L)<<endl;break; case3:InsList(L);break; case4:DelList(L,q);break; case5:cout<<sum(L)<<endl;break;; } cout<<"是否要繼續(xù)進(jìn)行操作y/n:"<<endl; cin>>c; }#include<stdio.h>#include<malloc.h>#defineMAX15#defineTURE1#defineFALSE0typedefcharElemType;typedefstructNode{ chardate; structNode*next;}Node,*LinkList;voidInitList(LinkList*L){ *L=(LinkList)malloc(sizeof(char)); (*L)->next=NULL;數(shù)據(jù)結(jié)構(gòu)實(shí)驗(yàn)1順序表-鏈表全文共14頁,當(dāng)前為第6頁。}數(shù)據(jù)結(jié)構(gòu)實(shí)驗(yàn)1順序表-鏈表全文共14頁,當(dāng)前為第6頁。voidPrintfLink(LinkListL){ LinkListp;p=L->next; printf("鏈表為:"); while(p!=NULL){ printf("%c",p->date); p=p->next; }}voidCreate(LinkListL){ LinkLists,r; charc; intflag=1; intn; r=L; printf("元素個(gè)數(shù):"); scanf("%d",&n); if(n>MAX) printf("超出限定長度!"); else { printf("輸入字符(以#鍵結(jié)束):"); while(flag) { scanf("%c",&c); if(c!='#') { s=(Node*)malloc(sizeof(char)); s->date=c; r->next=s; r=s; } else flag=0; r->next=NULL; } }}voidOrder(LinkListL){ charc; Node*r,*q,*p;數(shù)據(jù)結(jié)構(gòu)實(shí)驗(yàn)1順序表-鏈表全文共14頁,當(dāng)前為第7頁。 for(r=L->next;r->next!=NULL;r=r->next)數(shù)據(jù)結(jié)構(gòu)實(shí)驗(yàn)1順序表-鏈表全文共14頁,當(dāng)前為第7頁。 { p=r; for(q=r->next;q;q=q->next) if((q->date)<(p->date)) p=q; if(p!=r) { c=r->date; r->date=p->date; p->date=c; } }PrintfLink(L);} voidGet(LinkListL,inti,ElemType*e){intj;Node*p;p=L;j=-1; while((p->next!=NULL)&&(j<i)){p=p->next;j++;} *e=p->date; if(i==j)printf("第%d個(gè)元素為:%c",i,*e);elseprintf("FALSE");}voidLocate(LinkListL,ElemTypee){ inti=1; LinkListp; p=L->next; while(p&&p->date!=e) { i=i++; p=p->next; } if(!p) printf("FALSE\n"); else { printf("TRUE\n"); printf("該元素在第%d個(gè)位置!",i-1); }數(shù)據(jù)結(jié)構(gòu)實(shí)驗(yàn)1順序表-鏈表全文共14頁,當(dāng)前為第8頁。}數(shù)據(jù)結(jié)構(gòu)實(shí)驗(yàn)1順序表-鏈表全文共14頁,當(dāng)前為第8頁。voidInsList(LinkListL,inti,ElemTypee){ Node*p,*s;intk=0;p=L;while(p!=NULL&&k<i-1){p=p->next;k=k++;}if(!p){printf("插入位置不合理!");}s=(Node*)malloc(sizeof(char));s->date=e;s->next=p->next;p->next=s; Order(L);}voidDelList(LinkListL,inti,ElemType*e){ Node*p,*r; intj; j=0;p=L;while((p->next!=NULL)&&(j<i-1)){p=p->next; j++;}if(p->next!=NULL){ p->next=p->next->next; r=p->next; *e=r->date; printf("刪除第%d個(gè)元素:%c\n",i,*e); } else printf("刪除結(jié)點(diǎn)的位置i不合理!");}voidListLength(LinkListL){ Node*p;intj=0; p=L->next;數(shù)據(jù)結(jié)構(gòu)實(shí)驗(yàn)1順序表-鏈表全文共14頁,當(dāng)前為第9頁。 while(p!=NULL)數(shù)據(jù)結(jié)構(gòu)實(shí)驗(yàn)1順序表-鏈表全文共14頁,當(dāng)前為第9頁。 { p=p->next; j++; } printf("單鏈表的長度:%d",j);}voidmenu(){ printf("\n************************菜單*********************"); printf("\n1.創(chuàng)建任意字符型單循環(huán)鏈表"); printf("\n2.打?。ū闅v)該鏈表"); printf("\n3.查找第i個(gè)元素"); printf("\n4.查找與一已知字符相同的元素"); printf("\n5.插入元素"); printf("\n6.刪除第i個(gè)結(jié)點(diǎn)"); printf("\n7.計(jì)算鏈表的長度"); printf("\n8.退出"); printf("\n***********************************************");}voidmain(){ inti; intflag=0; ElemTypee;LinkListL; L=(LinkList)malloc(sizeof(char));InitList(&L); menu(); while(!flag) { printf("\n\n請(qǐng)輸入你的選擇(1~8):"); scanf("%d",&i); switch(i) { case1: Create(L); break; case2: Order(L); break; case3: printf("輸入要查找的第i個(gè)元素:");

溫馨提示

  • 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)論