資源描述:
《2線性表0908140805王飛》由會(huì)員上傳分享,免費(fèi)在線閱讀,更多相關(guān)內(nèi)容在教育資源-天天文庫(kù)。
1、實(shí)驗(yàn)二:線性表的實(shí)現(xiàn)一、實(shí)驗(yàn)要求:創(chuàng)建出順序表以及單鏈表。能夠正確地在順序表和單鏈表中插入數(shù)據(jù),刪除單鏈表及順序表中的數(shù)據(jù),并且完成表的遍歷。在順序表插入和刪除時(shí)能夠顯示移動(dòng)次數(shù)。二、需求分析:要求利用課堂上學(xué)習(xí)的知識(shí)完成以下功能1,生成順序表,2,順序表的插入,3,順序表的刪除,4,順序表的遍歷,5,生成單鏈表,6,單鏈表的插入,7,單鏈表的刪除,8,單鏈表的遍歷,9,退出三、概要設(shè)計(jì):主要有一個(gè)虛基類linearlist,派生兩個(gè)類:linkedlist(單鏈表)和seqlist(順序表)。在單鏈表中,有儲(chǔ)存
2、數(shù)據(jù)的T類型變量data以及指向下一個(gè)結(jié)點(diǎn)的指針link;在順序表中,有儲(chǔ)存數(shù)據(jù)的T類型指針變量data、表征順序表長(zhǎng)度的整型變量maxSize以及指向順序表末尾的整形指針last。單鏈表我用了struct來(lái)定義LinkNode類,主要有以下幾個(gè)函數(shù):構(gòu)造函數(shù)、析構(gòu)函數(shù)、voidinput(T)(進(jìn)行單鏈表的輸入)、virtualboolInsert(i,Tx)(進(jìn)行單鏈表的插入)、boolRemove(inti,T&x)(單鏈表的刪除操作)、voidoutput(T)(進(jìn)行單鏈表的遍歷)以及一些輔助完成功能的函
3、數(shù);順序表中函數(shù)與單鏈表中類似。函數(shù)算法將在“調(diào)試與測(cè)試”中說(shuō)明。最后,編寫一個(gè)主函數(shù)對(duì)線性表進(jìn)行功能的測(cè)試,用switch語(yǔ)句執(zhí)行要求的各項(xiàng)任務(wù),達(dá)到實(shí)驗(yàn)?zāi)康摹K?、詳?xì)設(shè)計(jì)://seqlist.h#ifndefseqlist_h#defineseqlist_h#include#include#include"linearList.h"constintdefaultSize=100;templateclassSeqList:publicLinearLis
4、t{protected:T*data;intmaxSize;intlast;//voidreSize(intnewSize);public:SeqList(intsz=defaultSize);SeqList(SeqList&L);~SeqList(){delete[]data;}intSize()const{returnmaxSize;}intLength()const{returnlast+1;}intSearch(T&x)const;intLocate(inti)const;//voidreSi
5、ze(intnewSize);boolInsert(inti,T&x);boolRemove(inti);voidinput();voidoutput();SeqListoperator=(SeqList&L);};templateSeqList::SeqList(intsz){if(sz>0){maxSize=sz;last=-1;data=newT[maxSize];if(data==NULL){cerr<<"存儲(chǔ)分配錯(cuò)誤!"<6、eSeqList::SeqList(SeqList&L){maxSize=L.Size();last=L.Length()-1;data=newT[maxSize];if(data==NULL){cerr<<"存儲(chǔ)分配錯(cuò)誤!"<intSeqList::Search(T&x)const{for(inti=0;i<=last;i++
7、)if(data[i]==x)returni+1;return0;}templateintSeqList::Locate(inti)const{if(i>=1&&i<=last+1)returni;elsereturn0;}templateboolSeqList::Insert(inti,T&x){if(last==maxSize-1)returnfalse;if(i<0
8、
9、i>last+1)returnfalse;for(intj=last;j>=i;j--)data
10、[j+1]=data[j];data[i]=x;last++;returntrue;}templateboolSeqList::Remove(inti){if(last==-1)returnfalse;if(i<0
11、
12、i>last+1)returnfalse;Tx=data[i-1];cout<