版權(quán)說(shuō)明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請(qǐng)進(jìn)行舉報(bào)或認(rèn)領(lǐng)
文檔簡(jiǎn)介
1、-作者xxxx-日期xxxx線性表的順序儲(chǔ)存結(jié)構(gòu)【精品文檔】重慶交通大學(xué)算法與數(shù)據(jù)結(jié)構(gòu)課程實(shí)驗(yàn)報(bào)告班 級(jí):計(jì)算機(jī)科學(xué)與技術(shù)2014級(jí)2班實(shí)驗(yàn)項(xiàng)目名稱: 線性表的順序儲(chǔ)存結(jié)構(gòu) 實(shí)驗(yàn)項(xiàng)目性質(zhì): 實(shí)驗(yàn)所屬課程: 算法與數(shù)據(jù)結(jié)構(gòu) 實(shí)驗(yàn)室(中心): B01407 指 導(dǎo) 教 師 : 魯云平 實(shí)驗(yàn)完成時(shí)間: 2016 年 3 月 21 日【精品文檔】教師評(píng)閱意見: 簽名: 年 月 日實(shí)驗(yàn)成績(jī):1、 實(shí)驗(yàn)?zāi)康?、實(shí)現(xiàn)線性表的順序存儲(chǔ)結(jié)構(gòu)2、熟悉C+程序的基本結(jié)構(gòu),掌握程序中的頭文件、實(shí)現(xiàn)文件和主文件之間的相互關(guān)系及各自的作用3、熟悉順序表的基本操作方式,掌握順序表相關(guān)操作的具體實(shí)現(xiàn) 二、實(shí)驗(yàn)內(nèi)容及要求對(duì)順序
2、存儲(chǔ)的線性表進(jìn)行一些基本操作。主要包括:(1)插入:操作方式為在指定元素前插入、在指定元素之后插入、在指定位置完成插入(2)刪除:操作方式可分為刪除指定元素、刪除指定位置的元素等,嘗試實(shí)現(xiàn)邏輯刪除操作。(3)顯示數(shù)據(jù)(4)查找:查詢指定的元素(可根據(jù)某個(gè)數(shù)據(jù)成員完成查詢操作)(5)定位操作:定位指定元素的序號(hào)(6)更新:修改指定元素的數(shù)據(jù)(7)數(shù)據(jù)文件的讀寫操作等。其它操作可根據(jù)具體需要自行補(bǔ)充。要求線性表采用類的定義,數(shù)據(jù)對(duì)象的類型自行定義。三、實(shí)驗(yàn)設(shè)備及軟件四、設(shè)計(jì)方案 題目線性表的順序存儲(chǔ)結(jié)構(gòu) 設(shè)計(jì)的主要思路1、 新建SeqList.h頭文件,定義SeqList模板類2、 設(shè)計(jì)類數(shù)據(jù)成員
3、,包括:T *data(用于存放數(shù)組)、int maxSize(最大可容表項(xiàng)的項(xiàng)數(shù))、int last(當(dāng)前已存表項(xiàng)的最后位置) 3、 設(shè)計(jì)類成員函數(shù),主要包括:int search(T& x)const;/搜索x在表中位置,函數(shù)返回表項(xiàng)序號(hào)int Locate(int i)const;/定位第i個(gè)表項(xiàng),函數(shù)返回表項(xiàng)序號(hào)bool getData(int i,T& x)const;/去第i個(gè)表項(xiàng)的值void setData(int i,T& x)/用x修改第i個(gè)表項(xiàng)的值bool Insert(int i,T& x);/插入x在第i個(gè)表項(xiàng)之后bool Remove(
4、int i,T& x);/刪除第i個(gè)表項(xiàng),通過(guò)x返回表項(xiàng)的值bool IsEmpty();/判表空否,空則返回true;否則返回falsebool IsFull();/判表滿否,滿則返回true;否則返回falsevoid input();/輸入void output();/輸出void ofile();/存儲(chǔ)在文件中void ifile();/讀取文件并顯示 主要功能1、 建立新表2、 對(duì)表進(jìn)行插入(指定元素前、后以及指定位置插入)、刪除(指定元素刪除及指定位置刪除)、修改等操作3、 顯示當(dāng)前操作表的全部?jī)?nèi)容4、 存儲(chǔ)在文件中5、 從文件中讀取表五、主要代碼SeqList.h中的主要
5、代碼:1、 類成員聲明部分:protected:T *data;/存放數(shù)組int maxSize;/最大可容納表項(xiàng)的項(xiàng)數(shù)int last;/當(dāng)前已存表項(xiàng)的最后位置(從0開始)void reSize(int newSize);/改變data數(shù)組空間大小public:SeqList(int sz = defaultSize);/構(gòu)造函數(shù)SeqList(SeqList<T>& L);/復(fù)制構(gòu)造函數(shù)SeqList()delete data;/析構(gòu)函數(shù)int Size()constreturn maxSize;/計(jì)算表最大可容納表項(xiàng)個(gè)數(shù)int Length()constreturn
6、last+1;/計(jì)算表長(zhǎng)度int search(T& x)const;/搜索x在表中位置,函數(shù)返回表項(xiàng)序號(hào)int Locate(int i)const; /定位第i個(gè)表項(xiàng),函數(shù)返回表項(xiàng)序號(hào)bool getData(int i,T& x)const/去第i個(gè)表項(xiàng)的值if(i>0&&i<=last+1)x=datai-1;return true;else return false;void setData(int i,T& x)/用x修改第i個(gè)表項(xiàng)的值if(i>0&&i<=last+1) datai-1=x;bool
7、Insert(int i,T& x);/插入x在第i個(gè)表項(xiàng)之后bool Remove(int i,T& x);/刪除第i個(gè)表項(xiàng),通過(guò)x返回表項(xiàng)的值bool IsEmpty()return (last = -1)?true:false;/判表空否,空則返回true;否則返回falsebool IsFull()return (last = maxSize-1)?true:false;/判表滿否,滿則返回true;否則返回falsevoid input();/輸入void output();/輸出SeqList<T>operator=(SeqList<T>&a
8、mp; L);/表整體賦值void ofile();/存儲(chǔ)在文件中void ifile();/讀取文件并顯示 2、 部分成員函數(shù)/搜索函數(shù):在表中順序搜索與給定值x匹配的表項(xiàng),找到則函數(shù)返回該表項(xiàng)是第幾個(gè)元素/否則函數(shù)返回0,表示搜索失敗template<class T>int SeqList<T>:search(T& x)constfor(int i = 0;i <= last; i+)if(datai = x) return i+1;/順序搜索return 0;/搜索失敗/定位函數(shù):template<class T>int SeqList&
9、lt;T>:Locate(int i)constif(i >= i&&i <= last+1) return i ;else return 0;/插入函數(shù)/將新元素x插入到表中第i(i>=0&&i<=last+1)個(gè)表項(xiàng)之后,函數(shù)返回插入成功的信息,若/插入成功,則返回true;否則返回false.i=0是虛擬的,實(shí)際上是插入的第1個(gè)元素位置template<class T>bool SeqList<T>:Insert(int i,T& x)if(last = maxSize-1) return fa
10、lse;/表滿,不能插入if(i<0 | i>last+1) return false;/參數(shù)i不合理,不能插入for(int j = last ;j >=i;j-)/依次后移,空出第i號(hào)位置dataj+1 = dataj;datai = x;/插入last+;/最后位置+1return true;/插入成功/刪除函數(shù)/從表中刪除第i個(gè)表項(xiàng),通過(guò)應(yīng)用型參數(shù)x返回刪除的元素值,函數(shù)/返回刪除成功的信息,如刪除成功則返回true,否則返回falsetemplate<class T>bool SeqList<T>:Remove(int i,T& x)
11、if(last = -1 )return false;if(i<1 | i>last+1)return false;x = datai-1;for(int j = i;j <= last;j+)dataj-1 = dataj;last-;return true;/輸入函數(shù)/從標(biāo)準(zhǔn)輸入逐個(gè)數(shù)據(jù)輸入,建立順序表template<class T>void SeqList<T>:input()cout<<"開始建立順序表,請(qǐng)輸入表中的元素個(gè)數(shù):"while(1)cin>>last;if(last<=maxSiz
12、e-1) break;cout<<"表元素個(gè)數(shù)有誤,范圍不能超過(guò)"<<maxSize<<":"for(int i = 0;i < last;i+)cout<<"#"<<i+1<<":"cin>>datai;/輸出函數(shù)template<class T>void SeqList<T>:output()cout<<"順序表當(dāng)前元素最后的位置為:"<<last<
13、<endl;for(int i = 0;i < last;i+)cout<<"#"<<i+1<<":"<<datai<<endl;/存儲(chǔ)在文件中template<class T>void SeqList<T>:ofile()ofstream f1("Test1.txt",ios:out);if(!f1)cout<<"存儲(chǔ)文件失??!"<<endl;exit(1);for(int i = 1;i &l
14、t; last+1;i+)f1.write(char*) &datai-1,sizeof(datai-1);cout<<"存儲(chǔ)成功!"<<endl;f1.close();/讀取文件并打印出文件內(nèi)容template<class T>void SeqList<T>:ifile()ifstream f2("Test1.txt",ios:binary);if(!f2)cout<<"打開文件失敗!"<<endl;exit(1);cout<<"文
15、件內(nèi)容如下:"<<endl;for(int i = 1;!f2.eof();i+)f2.read(char*)&datai-1,sizeof(datai-1);for(int j = 1;j < i-1;j+)cout<<"#"<<j<<":"<<dataj-1<<endl;f2.close(); 測(cè)試主函數(shù)1、插入功能,對(duì)不同位置的插入通過(guò)修改函數(shù)Insert(int i,x)第一形參實(shí)現(xiàn),位置可通過(guò)成員函數(shù)search(x)確定case 3:/指定元素后插
16、入int x,y;cout<<"請(qǐng)輸入指定元素:"cin>>x;cout<<"請(qǐng)輸入要插入的元素:"cin>>y;Seq.Insert(Seq.search(x),y);break; case 4:/指定位置插入int i,x;cout<<"請(qǐng)輸入插入的位置:"cin>>i;cout<<"請(qǐng)輸入要插入的元素:"cin>>x;Seq.Insert(i,x);break; case 5:/按內(nèi)容刪除指定元素int i,x;c
17、out<<"請(qǐng)輸入要?jiǎng)h除的元素內(nèi)容:"cin>>x;i = Seq.search(x);/指定元素位置if(Seq.Remove(i,x) cout<<"刪除成功!"<<endl;else cout<<"刪除失敗!"<<endl;break; 2、刪除功能,指定序號(hào)刪除直接調(diào)用Remove(i,x)即可實(shí)現(xiàn),指定表項(xiàng)的內(nèi)容刪除可通過(guò)search(x)函數(shù)返回得到該表項(xiàng)的序號(hào),再通過(guò)Remove(i,x)實(shí)現(xiàn)case 5:/按內(nèi)容刪除指定元素int i,x;cout
18、<<"請(qǐng)輸入要?jiǎng)h除的元素內(nèi)容:"cin>>x;i = Seq.search(x);/指定元素位置if(Seq.Remove(i,x) cout<<"刪除成功!"<<endl;else cout<<"刪除失敗!"<<endl;break; case 6:/按位置刪除指定元素int i,x;cout<<"請(qǐng)輸入要?jiǎng)h除的元素序號(hào):"cin>>i;if(Seq.Remove(i,x) cout<<"刪除成功
19、,刪除的元素是:"<<x<<endl;else cout<<"刪除失?。?quot;<<endl;break; 3、顯示功能,直接調(diào)用成員函數(shù)output()即可實(shí)現(xiàn)。4、查找功能,指定序號(hào)的查找通過(guò)成員函數(shù)getData(i,x),其中的應(yīng)用型形參可以返回該序號(hào)表項(xiàng)的值;指定表項(xiàng)查找通過(guò)成員函數(shù)search(x)即可實(shí)現(xiàn)case 8:/查找指定序號(hào)的元素int i,x;cout<<"請(qǐng)輸入要查找元素的序號(hào):"cin>>i;if(Seq.getData(i,x) cout<&l
20、t;"第"<<i<<"個(gè)元素的值 是:"<<x<<endl;else cout<<"查找失??!"<<endl;break; case 9:/查找指定內(nèi)容的元素int x;cout<<"請(qǐng)輸入要查找元素的內(nèi)容:"cin>>x;if(Seq.search(x) cout<<x<<"在 "<<Seq.search(x)<<" 位! "<<endl;else cout<<"查找失??!"<<endl;break; 5、修改功能,調(diào)用成員函數(shù)setData(i,x)即可實(shí)現(xiàn)case 10:/修改指定位置元素的數(shù)據(jù)int i,x,y;cout<<"請(qǐng)輸入要修改元素的序號(hào):"cin>>i;cout<<"請(qǐng)輸入要替代的元素?cái)?shù)據(jù):"cin>>x;Seq.setData(i,x);Seq.getData(i,y);/用y判定
溫馨提示
- 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ì)自己和他人造成任何形式的傷害或損失。
最新文檔
- 2024年度環(huán)保項(xiàng)目研發(fā)合作協(xié)議
- 2024臨時(shí)工合同模板
- 2024年度倉(cāng)儲(chǔ)合同倉(cāng)儲(chǔ)物及倉(cāng)儲(chǔ)期限
- 2024年度軟件定制開發(fā)合同
- 2024年 衛(wèi)星發(fā)射與運(yùn)營(yíng)服務(wù)合同
- 2024年商標(biāo)轉(zhuǎn)讓合同注意事項(xiàng)
- 2024年度碳排放權(quán)交易合同交易數(shù)量與交易價(jià)格
- 2(2024版)網(wǎng)絡(luò)安全風(fēng)險(xiǎn)評(píng)估合同
- 2024年度物業(yè)管理合同:住宅小區(qū)物業(yè)管理服務(wù)
- 2024年合作伙伴尋找居間合同 with 合作意向及中介費(fèi)用的規(guī)定
- 2024-2025學(xué)年上海市普陀區(qū)八年級(jí)(上)期中數(shù)學(xué)試卷
- 假期補(bǔ)課協(xié)議書
- 電子商務(wù)支付結(jié)算系統(tǒng)開發(fā)合同
- 服務(wù)質(zhì)量、保證措施
- (必練)廣東省軍隊(duì)文職(經(jīng)濟(jì)學(xué))近年考試真題試題庫(kù)(含答案)
- 含羞草天氣課件
- 2024年安全生產(chǎn)知識(shí)競(jìng)賽考試題庫(kù)及答案(共五套)
- 22《鳥的天堂》課件
- 農(nóng)業(yè)灌溉裝置市場(chǎng)環(huán)境與對(duì)策分析
- 新疆烏魯木齊市第十一中學(xué)2024-2025學(xué)年八年級(jí)上學(xué)期期中道德與法治試卷
- 部編版小學(xué)五年級(jí)上冊(cè)道法課程綱要(知識(shí)清單)
評(píng)論
0/150
提交評(píng)論