數(shù)據(jù)結(jié)構(gòu)線性表實(shí)驗(yàn)報(bào)告五篇_第1頁(yè)
數(shù)據(jù)結(jié)構(gòu)線性表實(shí)驗(yàn)報(bào)告五篇_第2頁(yè)
數(shù)據(jù)結(jié)構(gòu)線性表實(shí)驗(yàn)報(bào)告五篇_第3頁(yè)
數(shù)據(jù)結(jié)構(gòu)線性表實(shí)驗(yàn)報(bào)告五篇_第4頁(yè)
數(shù)據(jù)結(jié)構(gòu)線性表實(shí)驗(yàn)報(bào)告五篇_第5頁(yè)
已閱讀5頁(yè),還剩11頁(yè)未讀, 繼續(xù)免費(fèi)閱讀

下載本文檔

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

文檔簡(jiǎn)介

數(shù)據(jù)結(jié)構(gòu)線性表實(shí)驗(yàn)報(bào)告五篇第一篇:數(shù)據(jù)結(jié)構(gòu)線性表實(shí)驗(yàn)報(bào)告實(shí)驗(yàn)報(bào)告課程名:數(shù)據(jù)結(jié)構(gòu)實(shí)驗(yàn)名:線性表及其操作姓名:班級(jí):學(xué)號(hào):撰寫(xiě)時(shí)間:一實(shí)驗(yàn)?zāi)康呐c要求1.掌握線性表的實(shí)現(xiàn)2.掌握線性表的根本操作的實(shí)現(xiàn)二實(shí)驗(yàn)內(nèi)容?分別完成線性表的順序表示及鏈?zhǔn)奖硎?在兩種表示上,分別實(shí)現(xiàn)一些線性表的操作,至少應(yīng)該包括–在第i個(gè)位置插入一個(gè)元素–刪除第i個(gè)元素–返回線性表長(zhǎng)–返回第i個(gè)元素的值三實(shí)驗(yàn)結(jié)果與分析#include#include//---------線性表鏈?zhǔn)奖硎?----------structV//聲明一個(gè)結(jié)構(gòu)體類型structV{intvalue;structV*next;//定義結(jié)構(gòu)體變量};voidPrintLink(structV*p)//定義一個(gè)結(jié)構(gòu)體指針{while(p!=NULL)//只要指針指向的變量不為NULL;就會(huì)一直循環(huán)鏈表指向下一個(gè)結(jié)構(gòu)體{printf(“%d,”,(*p).value);p=(*p).next;//指針指向下一個(gè)結(jié)構(gòu)體}printf(“n”);}voidLink(){structV*head;head=(structV*)malloc(sizeof(structV));//開(kāi)辟一個(gè)長(zhǎng)度為size的內(nèi)存(*head).value=-100;//表頭為-100(*head).next=NULL;printf(“------------線性表鏈?zhǔn)奖硎?-----------n”);inti,n=10;structV*p=head;printf(“10個(gè)數(shù)據(jù):n”);for(i=0;i(*p).next=(structV*)malloc(sizeof(structV));p=(*p).next;(*p).value=2*i;(*p).next=NULL;}PrintLink(head);//調(diào)用PrintLink函數(shù)printf(“刪除第四個(gè)數(shù)據(jù):n”);intk=4;p=head;for(i=1;ip=(*p).next;}structV*temp=(*p).next;//k表示插入和刪除的位置(*p).next=(*temp).next;free(temp);PrintLink(head);printf(“插入第十個(gè)數(shù)據(jù):n”);k=10;p=head;for(i=1;ip=(*p).next;}temp=(*p).next;(*p).next=(structV*)malloc(sizeof(structV));(*(*p).next).value=-99;(*(*p).next).next=temp;PrintLink(head);}//---------線性表順序表示-----------voidseq1(){inti,n=10,k=4;inta[10];//---------輸出數(shù)組元素------------printf(“-------------線性表順序表示---------n”);for(i=0;ia[i]=i;}printf(“數(shù)組元素為:n”);for(i=0;iprintf(“%3d”,a[i]);}printf(“n”);//--------插入一個(gè)數(shù)組元素---------intm=n+1,j=12;//插入元素12intb[20];for(i=0;iif(i{b[i]=a[i];}elseif(i==k){b[i]=j;}else{b[i]=a[i-1];}}printf(“輸出插入一個(gè)元素的數(shù)組:n”);for(i=0;i{if(i{c[i]=a[i];}else{c[i]=a[i+1];}}printf(“輸出刪除一個(gè)元素的數(shù)組:n”);for(i=0;iprintf(“數(shù)組元素為:n”);for(i=1;i<=a[0];i++){a[i]=i;}for(i=0;i<2*a[0];i++){printf(“%d,”,a[i]);}printf(“n”);//-----在k位置插入一個(gè)元素------------for(i=a[0];i>=k;i--){a[i+1]=a[i];}a[k]=-100;++a[0];for(i=0;i<2*a[0];i++){printf(“%d,”,a[i]);}printf(“n”);//-------在k---------------for(i=0;i>k;i++){a[i]=a[i+1];}a[k]=-1;a[0]=n;--a[0];for(i=0;i<2*a[0];i++){printf(“%d,”,a[i]);}printf(“n”);}intmain(intargc,char*argv[]){seq1();seq2();Link();return0;}圖1:實(shí)驗(yàn)結(jié)果截圖實(shí)驗(yàn)分析:已在程序中按規(guī)定格式標(biāo)注。第二篇:福州大學(xué)數(shù)據(jù)結(jié)構(gòu)實(shí)驗(yàn)報(bào)告-線性表數(shù)據(jù)結(jié)構(gòu)原理實(shí)驗(yàn)報(bào)告學(xué)號(hào):姓名:線性表一、問(wèn)題描述1.實(shí)現(xiàn)ADT表2.設(shè)表的Reverse運(yùn)算將表中元素的次序反轉(zhuǎn)。擴(kuò)充用數(shù)組實(shí)現(xiàn)表的結(jié)構(gòu)List,增加函數(shù)Reverse(L),將表L中元素的次序反轉(zhuǎn),并要求就地實(shí)現(xiàn)Reverse運(yùn)算。二、算法描述從i=0開(kāi)始,將表中第N個(gè)元素與N-i-1個(gè)元素調(diào)換即可三、核心代碼voidReverseList(ListL){ListItemtmp;inti;for(i=0;in/2;i++){}tmp=L->table[i];L->table[i]=L->table[L->n-1-i];L->table[L->n-1-i]=tmp;}四、運(yùn)行結(jié)果第三篇:數(shù)據(jù)結(jié)構(gòu)--實(shí)驗(yàn)報(bào)告線性表的根本操作}(一)單鏈表的根本操作#includeusingnamespacestd;#definetrue1#definefalse0#defineok1#defineerror0#defineoverflow-2typedefintStatus;typedefintElemType;typedefstructLNode//存儲(chǔ)結(jié)構(gòu){ElemTypedata;structLNode*next;}LNode,*LinkList;voidCreateList(LinkList&L,intn)//尾插法創(chuàng)立單鏈表{LinkListp;L=newLNode;L->next=NULL;//建立一個(gè)帶頭結(jié)點(diǎn)的單鏈表LinkListq=L;//使q指向表尾}StatusGetElem(LinkListL,inti,ElemType&e)//取第i個(gè)元素{LinkListp=L->next;intj=1;while(p&&jnext;++j;}for(inti=1;i<=n;i++){p=newLNode;cin>>p->data;p->next=NULL;q->next=p;q=p;}if(!p||j>i)returnerror;//第i個(gè)元素不存在e=p->data;returnok;}StatusLinkInsert(LinkList&L,inti,ElemTypee)//插入{LinkListp=L;intj=0;while(p&&jnext;++j;}//尋找第i-1個(gè)結(jié)點(diǎn)if(!p||j>i-1)returnerror;//i小于1或者大于表長(zhǎng)加1LinkLists=newLNode;//生成新結(jié)點(diǎn)s->data=e;s->next=p->next;//插入L中p->next=s;returnok;}StatusListDelete(LinkList&L,inti,ElemType&e)//刪除{LinkListp=L;LinkListq;intj=0;while(p->next&&jp=p->next;++j;}if(!(p->next)||j>i-1)returnerror;//刪除位置不合理q=p->next;p->next=q->next;//刪除并釋放結(jié)點(diǎn)e=q->data;delete(q);returnok;}voidMergeList(LinkList&La,LinkList&Lb,LinkList&Lc){//合并兩個(gè)順序鏈表LinkListpa,pc,pb;pa=La->next;pb=Lb->next;Lc=pc=La;while(pa&&pb){if(pa->data<=pb->data){pc->next=pa;pc=pa;pa=pa->next;}else{pc->next=pb;pc=pb;pb=pb->next;}}pc->next=pa?pa:pb;delete(Lb);}voidshow(LinkListL)//{LinkListp;p=L->next;while(p){cout<data<”;p=p->next;}cout<next;while(p){++i;顯示表長(zhǎng)3p=p->next;}returni;}voidxiugai(LinkListL)//修改{inti,j=1;ElemTypek;ElemTypee,m;LinkListp=L->next;cout<>i;GetElem(L,i,e);cout<>k;while(p&&jnext;++j;}m=p->data;p->data=k;cout<>a;cout<>b;cout<>select;switch(select){case1:cout<cin>>x;cout<CreateList(list,x);break;case2:cout<show(list);break;case3:ints;cout<>x;while(x<0||x>Length(list,s)){cout<>x;}GetElem(list,x,y);cout<>x;while(x<0||x>Length(list,s)){cout<>x;}cout<>y;LinkInsert(list,x,y);cout<>x;while(x<0||x>Length(list,s)){cout<>x;}cout<ListDelete(list,x,y);}break;case8:hebing();break;case9:exit(0);break;default:cout<四、測(cè)試結(jié)果1)順序表的測(cè)試結(jié)果82)單鏈表的測(cè)試結(jié)果五、心得體會(huì)當(dāng)聽(tīng)到老師說(shuō)寫(xiě)數(shù)據(jù)結(jié)構(gòu)實(shí)驗(yàn)報(bào)告時(shí),我有點(diǎn)驚訝,才學(xué)了不到一個(gè)月,就要寫(xiě)實(shí)驗(yàn)報(bào)告。記得去年學(xué)習(xí)C++時(shí),學(xué)了一個(gè)學(xué)期,程序設(shè)計(jì)用了三周,才完成的,這個(gè)實(shí)驗(yàn)報(bào)告居然要一周完成兩個(gè)設(shè)計(jì),覺(jué)得很難。但是現(xiàn)在一周過(guò)去了,我也寫(xiě)完了,自我感覺(jué)良好。通過(guò)這次寫(xiě)實(shí)驗(yàn)報(bào)告,我深切的理解了這門(mén)課的本質(zhì)。剛開(kāi)始學(xué)這門(mén)課時(shí),當(dāng)時(shí)還不清楚這門(mén)課程的目的,現(xiàn)在,我真正的理解了:數(shù)據(jù)結(jié)構(gòu)像是身體的骨骼,而C++是填充這骨骼的肉體,二者相結(jié)合才能使整個(gè)程序更加完整,健全。數(shù)據(jù)結(jié)構(gòu)是個(gè)框架,模型,抽象數(shù)據(jù)類型中列舉了各種操作,而所用的C++語(yǔ)言,將各種操作描述出來(lái)構(gòu)成算法。數(shù)據(jù)結(jié)構(gòu)+算法=程序設(shè)計(jì)。在這次設(shè)計(jì)的過(guò)程中,我還遇到了,很多的問(wèn)題。順序表是按順序存儲(chǔ)的,用了一維數(shù)組來(lái)存儲(chǔ),又結(jié)合C++的程序設(shè)計(jì),我又用了類,但是,在執(zhí)行時(shí)出現(xiàn)了問(wèn)題。后來(lái)問(wèn)同學(xué),指出我的錯(cuò)誤,不過(guò)獲益不少。我又重新整理思路,把順序表的根本操作寫(xiě)好了。雖然走了很多彎路,但是讓我認(rèn)識(shí)到,一定要?jiǎng)?chuàng)新,大膽,不能按照舊的思路去干新的事情。單鏈表寫(xiě)起來(lái)簡(jiǎn)單多了,這個(gè)很快就搞定了。但是細(xì)節(jié)上出了問(wèn)題。比方說(shuō),有些變量的重復(fù)定義,有些變量又沒(méi)有定義,在調(diào)用函數(shù),就直接復(fù)制過(guò)來(lái),沒(méi)有改參數(shù)……通過(guò)修改,我深刻理解到:細(xì)節(jié)決定成敗,在以后,不管做任何事情都要認(rèn)真,細(xì)心。這次的實(shí)驗(yàn)報(bào)告,讓我受益匪淺,不僅有知識(shí)方面的,還有生活和精神上的。總之,我會(huì)繼續(xù)我的興趣編程,相信在編程的過(guò)程中,能不斷的提高自己。第四篇:數(shù)據(jù)結(jié)構(gòu)線性表試驗(yàn)報(bào)告線性表上機(jī)實(shí)習(xí)1、實(shí)驗(yàn)?zāi)康摹?〕熟悉將算法轉(zhuǎn)換為程序代碼的過(guò)程?!?〕了解順序表的邏輯結(jié)構(gòu)特性,熟練掌握順序表存儲(chǔ)結(jié)構(gòu)的C語(yǔ)言描述方法?!?〕熟練掌握順序表的根本運(yùn)算:查找、插入、刪除等,掌握順序表的隨機(jī)存取特性。〔4〕了解線性表的鏈?zhǔn)酱鎯?chǔ)結(jié)構(gòu),熟練掌握線性表的鏈?zhǔn)酱鎯?chǔ)結(jié)構(gòu)的C語(yǔ)言描述方法?!?〕熟練掌握線性鏈表〔單鏈表〕的根本運(yùn)算:查找、插入、刪除等,能在實(shí)際應(yīng)用中靈活選擇適當(dāng)?shù)逆湵斫Y(jié)構(gòu)。2、實(shí)驗(yàn)要求〔1〕熟悉順序表的插入、刪除和查找。〔2〕熟悉單鏈表的插入、刪除和查找。3、實(shí)驗(yàn)內(nèi)容:①順序表〔1〕抽象數(shù)據(jù)類型定義typedefstruct{TypeDatadata[maxsize];//容量為maxsize的靜態(tài)順手表intn;//順序表中的實(shí)際元素個(gè)數(shù)}SeqList;//靜態(tài)順序表的定義在本次實(shí)驗(yàn)中,首先建立一個(gè)空的靜態(tài)順序表,然后鍵盤(pán)輸入數(shù)據(jù)存入表中,然后進(jìn)入菜單項(xiàng)選擇擇界面,通過(guò)不同的數(shù)字輸入,實(shí)現(xiàn)對(duì)順序表,刪除,插入,查找,顯示等操作?!?〕存儲(chǔ)結(jié)構(gòu)定義及算法思想在順序表結(jié)構(gòu)體的定義中,typedefintTypeData為整型,存儲(chǔ)結(jié)構(gòu)如下:for(n=0;ncout<cin>>L.data[n];//順序?qū)?shù)據(jù)存入順序表}//其他存儲(chǔ)與此類似,都是直接賦值與數(shù)組的某一位插入版塊子函數(shù):voidinsert(SeqList&L)//插入數(shù)據(jù){inta,b,c,k;cout<cin>>a>>b;if(b<=0||b>(L.n+1)){cout<k=L.data[b-1];L.data[b-1]=a;c=L.n;L.n=L.n+1;while(c>b){L.data[c]=L.data[c-1];c--;//通過(guò)循環(huán),實(shí)現(xiàn)插入位置后的數(shù)據(jù)挨個(gè)往后移動(dòng)一位}L.data[b]=k;}順序表的插入與刪除操作類似,在插入與刪除后,都要循環(huán)調(diào)整后面數(shù)組的每一位元素,同時(shí)記錄數(shù)據(jù)元素的長(zhǎng)度的標(biāo)示符也要跟著改變。顯示操作是通過(guò)循環(huán)實(shí)現(xiàn)表中第一個(gè)元素到最后一個(gè)元素的輸出,查找操作是直接取數(shù)組中的查找位輸出?!?〕實(shí)驗(yàn)結(jié)果與分析②單鏈表〔1〕抽象數(shù)據(jù)類型定義typedefstructnode{DataTypedata;//鏈表的數(shù)據(jù)類型structnode*link;//鏈表的結(jié)點(diǎn)指針}linknode,*linklist;//定義了結(jié)構(gòu)體linklode和結(jié)構(gòu)體指針linklist在本次實(shí)驗(yàn)中,首先程序自己建立一個(gè)空的頭結(jié)點(diǎn),通過(guò)菜單的功能選擇“添加鏈表數(shù)據(jù)”可自由添加鏈表的節(jié)點(diǎn)數(shù)及元素值。在菜單項(xiàng)選擇擇中,有“添加鏈數(shù)據(jù)”,“插入鏈表數(shù)據(jù)”,“刪除鏈表數(shù)據(jù)”,“查找鏈表數(shù)據(jù)”和“顯示鏈表數(shù)據(jù)”功能,選擇不能的功能選擇就能實(shí)現(xiàn)不同的操作。其中“添加鏈表數(shù)據(jù)”可反復(fù)批量輸入鏈表數(shù)據(jù)。〔2〕存儲(chǔ)結(jié)構(gòu)定義及算法思想在單鏈表中,typedefintDataType;DataTypedata;定義鏈表存儲(chǔ)數(shù)據(jù)位整型。存儲(chǔ)結(jié)構(gòu)如下:while(p->link!=NULL){p=p->link;k++;//首先找到單鏈表的最后結(jié)點(diǎn)〔如果是只有頭結(jié)點(diǎn)}的單鏈表那么直接跳過(guò)〕,以便后面接著輸入數(shù)據(jù)for(inti=0;i{cout<//開(kāi)辟新的結(jié)點(diǎn)空間并轉(zhuǎn)化為linklist指針型cin>>q->data;q->link=p->link;//將前面一個(gè)結(jié)點(diǎn)的指向(及NULL)賦給新開(kāi)辟的結(jié)點(diǎn)的指向p->link=q;//將插入點(diǎn)前面一個(gè)結(jié)點(diǎn)指向新開(kāi)辟的的結(jié)點(diǎn)p=q;//將指明的最后一個(gè)一個(gè)結(jié)點(diǎn)向后移1位到最后一位,以便后面接著輸入}刪除結(jié)點(diǎn)子函數(shù):voiddelate(linklist&l){//刪除單鏈表數(shù)據(jù)linklistp;intm,n,i=0;cout<cin>>m;p=l;//將頭結(jié)點(diǎn)賦給轉(zhuǎn)移指針pwhile(p&&i//查找刪除結(jié)點(diǎn)的位置p=p->link;//當(dāng)在單鏈表中間已查到刪除結(jié)點(diǎn)或p=NULL時(shí)跳出循環(huán)i++;}if(p==NULL){//當(dāng)p=NULL跳出循環(huán)時(shí),說(shuō)明鏈表中沒(méi)有該結(jié)點(diǎn)cout<}n=p->link->data;//找到刪除接結(jié)點(diǎn)將數(shù)據(jù)取出并顯示出來(lái)〔找結(jié)點(diǎn)時(shí)是找的前一個(gè)結(jié)點(diǎn)〕cout<p->link=p->link->link;//將刪除結(jié)點(diǎn)的前后結(jié)點(diǎn)鏈接起來(lái)}鏈表的刪除,插入操作是類似的,要考慮到參加或減少一個(gè)結(jié)點(diǎn)后,前后結(jié)點(diǎn)的鏈接關(guān)系,以及刪除或插入的是最后一個(gè)結(jié)點(diǎn)時(shí),新空間的開(kāi)辟與結(jié)點(diǎn)收尾等問(wèn)題。其中刪除功能的一局部就是查找功能,顯示功能也是從鏈表的頭結(jié)點(diǎn)遍歷至最后一個(gè),依次輸出?!?〕實(shí)驗(yàn)結(jié)果與分析③心得體會(huì)本次數(shù)據(jù)結(jié)構(gòu)實(shí)習(xí)我收獲頗豐,以前學(xué)過(guò)c語(yǔ)言與c++也有經(jīng)常上機(jī),但以往都是偏向于程序整體的算法設(shè)計(jì),沒(méi)有像這次的實(shí)習(xí)這樣是著重在線性表,鏈表結(jié)構(gòu)的算法設(shè)計(jì)上面。這次上機(jī)實(shí)習(xí),讓我更加熟練了結(jié)構(gòu)體及結(jié)構(gòu)體指針的用法,線性表的設(shè)計(jì)等等,同時(shí)在這次實(shí)習(xí)中,引用,指針,地址這三個(gè)的用法曾一度讓我混淆,在查閱書(shū)籍后才得以解決,也希望老師在課堂上有時(shí)間時(shí)給我們?cè)敿?xì)講解一下,指針,地址,引用三者的使用。附錄:順序表源代碼:#includeusingnamespacestd;#definemaxsize50typedefintTypeData;typedefstruct{TypeDatadata[maxsize];intn;}SeqList;voidmakeSeq(SeqList&L)//據(jù){intm,n,k;cout<>m;for(n=0;n>L.data[n];}L.n=m;cout<輸入線性表數(shù)輸出線性表數(shù)據(jù)voidinsert(SeqList&L)//插入數(shù)據(jù){inta,b,c,k;cout<>a>>b;if(b<=0||b>(L.n+1)){cout<b){L.data[c]=L.data[c-1];c--;}L.data[b]=k;}voiddelate(SeqList&L)//刪除數(shù)據(jù){intwei;cout<>wei;if(wei<1||wei>L.n){cout<>a;if(a<=0||a>(L.n)){cout<cout<>xuanze;switch(xuanze){case1:insert(L);break;case2:delate(L);break;case3:find(L);break;case4:showSeq(L);break;default:break;}}}單鏈表源代碼:#includeusingnamespacestd;typedefintDataType;typedefstructnode{DataTypedata;structnode*link;}linknode,*linklist;linklistchushihua(){linklistL;L=(linklist)malloc(sizeof(linknode));L->link=NULL;cout<>a;linklistp,q;p=l;while(p->link!=NULL){p=p->link;k++;}for(inti=0;i>q->data;q->link=p->link;p->link=q;p=q;}}voidshow(linklistl){cout<link;while(p!=NULL){cout<data<link;}cout<>m;linklistp;p=l->link;while(p&&ilink;i++;}if(!p){cout<data<{linklistp,q;intm,n,i=0;cout<>m>>n;p=l;while(p&&ilink;i++;}if(p==NULL){cout<q=(linklist)malloc(sizeof(linknode));q->data=n;q->link=p->link;p->link=q;}voiddelate(linklist&l){linklistp;intm,n,i=0;cout<>m;p=l;while(p&&ilink;i++;}if(p==NULL){cout<link->data;cout<link=p->link->link;}voidmain(){linklistL;intselect;L=chushihua();while(1){cout<>select;switch(select){case1:shuru(L);break;case2:insert(L);break;case3:delate(L);break;case4:find(L);break;case5:show(L);break;default:break;}}}第五篇:數(shù)據(jù)結(jié)構(gòu)實(shí)驗(yàn)報(bào)告二線性表的順序存儲(chǔ)實(shí)驗(yàn)報(bào)告二線性表的順序存儲(chǔ)班級(jí):2010XXX姓名:HoogLe學(xué)號(hào):2010XXXX專業(yè):XXXX一、實(shí)驗(yàn)?zāi)康模骸?〕掌握順序表的根本操作的實(shí)現(xiàn)方法?!?〕應(yīng)用順序表的根本算法實(shí)現(xiàn)集合A=AUB算法。〔3〕應(yīng)用順序表的根本算法實(shí)現(xiàn)兩有序順序表的歸并算法。二、實(shí)驗(yàn)內(nèi)容:1、線性表順序存儲(chǔ)結(jié)構(gòu)的根本操作算法實(shí)現(xiàn)〔要求采用類模板實(shí)現(xiàn)〕[實(shí)現(xiàn)提示]〔同時(shí)可參見(jiàn)教材p5822-p60頁(yè)算法、ppt〕函數(shù)、類名稱等可自定義,局部變量請(qǐng)加上學(xué)號(hào)后3位。庫(kù)函數(shù)載和常量定義:〔代碼〕#includeusingnamespacestd;constintMaxSize=100;〔1〕順序表存儲(chǔ)結(jié)構(gòu)的定義(類的聲明):〔代碼〕template//定義模板類SeqListclassSeqList{public:SeqList();//無(wú)參構(gòu)造函數(shù)SeqList(datatypea[],intn);//有參構(gòu)造函數(shù)~SeqList(){};//析構(gòu)函數(shù)為空intLength();//求線性表的長(zhǎng)度datatypeGet(inti);//按位查找,取線性表的第i個(gè)元素intLocate(datatypeitem);//查找元素itemvoidInsert(inti,datatypeitem);//在第i個(gè)位置插入元素itemdatatypeDelete(inti);//刪除線性表的第i個(gè)元素voiddisplay();//遍歷線性表,按序號(hào)依次輸出各元素private:datatypedata[MaxSize];//存放數(shù)據(jù)元素的數(shù)組intlength;//線性表的長(zhǎng)度};〔2〕初始化順序表算法實(shí)現(xiàn)〔不帶參數(shù)的構(gòu)造函數(shù)〕/**輸入:無(wú)*前置條件:順序表不存在*功能:構(gòu)建一個(gè)順序表*輸出:無(wú)*后置條件:表長(zhǎng)為0*/實(shí)現(xiàn)代碼:templateSeqList::SeqList(){length=0;}〔3〕順序表的建立算法〔帶參數(shù)的構(gòu)造函數(shù)〕/**輸入:順序表信息的數(shù)組形式a[],順序表長(zhǎng)度n*前置條件:順序表不存在*功能:將數(shù)組a[]中元素建為長(zhǎng)度為n的順序表*輸出:無(wú)*后置條件:構(gòu)建一個(gè)順序表*/實(shí)現(xiàn)代碼:templateSeqList::SeqList(datatypea[],intn){if(n>MaxSize){cout<data[i]=a[i];length=n;}〔4〕在順序表的第i個(gè)位置前插入元素e算法/**輸入:插入元素e,插入位置i*前置條件:順序表存在,i要合法*功能:將元素e插入到順序表中位置i處*輸出:無(wú)*后置條件:順序表插入新元素,表長(zhǎng)加1*/實(shí)現(xiàn)代碼:templatevoidSeqList::Insert(inti,datatypeitem){intj;if(length>=MaxSize){cout<length+1){cout<=i;j--)data[j]=data[j-1];data[i-1]=item;length++;}〔5〕刪除線性表中第i個(gè)元素算法/**輸入:要?jiǎng)h除元素位置i*前置條件:順序表存在,i要合法*功能:刪除順序表中位置為i的元素*輸出:無(wú)*后置條件:順序表冊(cè)除了一個(gè)元素,表長(zhǎng)減1*/實(shí)現(xiàn)代碼:templatedatatypeSeqList::Delete(inti){intitem,j;if(length==0){cout<length){cout<for(j=i;jdata[j-1]=data[j];//注意數(shù)組下標(biāo)從0記length--;returnitem;}〔6〕遍歷線性表元素算法/**輸入:無(wú)*前置條件:順序表存在*功能:順序表遍歷*輸出:輸出所有元素*后置條件:無(wú)*/實(shí)現(xiàn)代碼:templatevoidSeqList::display(){if(length==0){cout<cout<〔7〕獲得線性表長(zhǎng)度算法/**輸入:無(wú)*前置條件:順序表存在*功能:輸出順序表長(zhǎng)度*輸出:順序表長(zhǎng)度*后置條件:無(wú)*/實(shí)現(xiàn)代碼:templateintSeqList::Length(){returnLength;}〔8〕在順序線性表中查找e值,返回該元素的位序算法/**輸入:查詢?cè)刂礶*前置條件:順序表存在*功能:按值查找值的元素并輸出位置*輸出:查詢?cè)氐奈恢?后置條件:無(wú)*/實(shí)現(xiàn)代碼:templateintSeqList::Locate(datatypeitem){for(inti=0;i//下標(biāo)為i的元素等于item,返回其序號(hào)i+1return0;//查找失敗}〔9〕獲得順序線性表第i個(gè)元素的值/**輸入:查詢?cè)匚恢胕*前置條件:順序表存在,i要合法*功能:按位查找位置為i的元素并輸出值*輸出:查詢?cè)氐闹?后置條件:無(wú)*/實(shí)現(xiàn)代碼:templatedatatypeSeqList::Get(inti){if(i<0||i>length){cout<〔10〕判表空算法/**輸入:無(wú)*前置條件:無(wú)*功能:判表是否為空*輸出:為空返回1,不為空返回0*后置條件:無(wú)*/實(shí)現(xiàn)代碼:templateboolSeqList::Empty(){if(length==0){return1;}else{return0;}}(11)求直接前驅(qū)結(jié)點(diǎn)算法/**輸入:要查找的元素e,待存放前驅(qū)結(jié)點(diǎn)值e1*前置條件:無(wú)*功能:查找該元素的所在位置,獲得其前驅(qū)所在位置。*輸出:返回其前驅(qū)結(jié)點(diǎn)的位序。*后置條件:e1值為前驅(qū)結(jié)點(diǎn)的值*/實(shí)現(xiàn)代碼:templateintSeqList::Pre(datatypeitem){intk=Locate(item)-1;if(k>0)returnk;else{cout<return0;}}(12)求直接后繼結(jié)點(diǎn)算法/**輸入:要查找的元素e,待存放后繼結(jié)點(diǎn)值e1*前置條件:無(wú)*功能:查找該元素的所在位置,獲得其后繼所在位置。*輸出:返回其后繼結(jié)點(diǎn)的位序。*后置條件:e1值為后繼結(jié)點(diǎn)的值*/實(shí)現(xiàn)代碼:templateintSeqList::Suc(datatypeitem){intk=Locate(item)+1;if(k>length){cout<returnk;}}上機(jī)實(shí)現(xiàn)以上根本操作,寫(xiě)出main()程序:voidmain(){SeqListSeq;//創(chuàng)立if(Seq.Empty()){cout<}Seq.Insert(1,1);Seq.Insert(2,2);Seq.Insert(3,3);Seq.Insert(4,4);Seq.Insert(5,5);//插入元素操作cout<cout<cout<cout<cout<Seq.Delete(3);//刪除元素cout<cout<cout<cout<cout<要求對(duì)每個(gè)算法都加以測(cè)試,判斷是否正確;并測(cè)試不同類型數(shù)據(jù)的操作。粘貼測(cè)試數(shù)據(jù)及運(yùn)行結(jié)果:2、用以上根本操作算法,實(shí)現(xiàn)A=AUB算法。〔利用函數(shù)模板實(shí)現(xiàn)〕/**輸入:集合A,集合B*前置條件:無(wú)*功能:實(shí)現(xiàn)A=AUB*輸出:無(wú)*后置條件:A中添加了B中的元素。*/實(shí)現(xiàn)代碼:templateSeqListSeqList::Add(SeqList&item){if(item.Empty())return*this;else{intk=item.Length

溫馨提示

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