




版權(quán)說(shuō)明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請(qǐng)進(jìn)行舉報(bào)或認(rèn)領(lǐng)
文檔簡(jiǎn)介
1、課程實(shí)驗(yàn)報(bào)告課程名稱:面向?qū)ο蟪绦蛟O(shè)計(jì)院 系:專業(yè)班級(jí):學(xué) 號(hào):姓 名:指導(dǎo)教師:實(shí)驗(yàn)一.面向過(guò)程的整型棧編程 1 .需求分析 1.1 題目要求 1.2 需求分析2 .系統(tǒng)設(shè)計(jì)2.1 概要設(shè)計(jì)2.2 詳細(xì)設(shè)計(jì)4 .軟件測(cè)試5 .特點(diǎn)與不足5.1 技術(shù)特點(diǎn)5.2 不足和改進(jìn)的建議6 .過(guò)程和體會(huì)6.1 遇到的主要問(wèn)題和解決方法 6.2 課程設(shè)計(jì)的體會(huì)7 .源碼和說(shuō)明7.1 文件清單及其功能說(shuō)明 7.2 用戶使用說(shuō)明書(shū)7.3 源代碼實(shí)驗(yàn)二.面向?qū)ο蟮恼蜅>幊?1 .需求分析 1.1 題目要求 1.2 需求分析2 .系統(tǒng)設(shè)計(jì)2.1 概要設(shè)計(jì)2.2 詳細(xì)設(shè)計(jì)3 .軟件開(kāi)發(fā)4 .軟件測(cè)試5 .特點(diǎn)與不
2、足5.1 技術(shù)特點(diǎn)5.2 不足和改進(jìn)的建議6 .過(guò)程和體會(huì)6.1 遇到的主要問(wèn)題和解決方法 6.2 課程設(shè)計(jì)的體會(huì)7.源碼和說(shuō)明7.1文件清單及其功能說(shuō)明 7.2用戶使用說(shuō)明書(shū)7.3源代碼實(shí)驗(yàn)三.基于算符重載的整型棧編程 1.需求分析 1.1 題目要求 1.2 需求分析2 .系統(tǒng)設(shè)計(jì)2.1 概要設(shè)計(jì)2.2 詳細(xì)設(shè)計(jì)3 .軟件開(kāi)發(fā)4 .軟件測(cè)試5 .特點(diǎn)與不足5.1 技術(shù)特點(diǎn)5.2 不足和改進(jìn)的建議6 .過(guò)程和體會(huì)6.1 遇到的主要問(wèn)題和解決方法 6.2 課程設(shè)計(jì)的體會(huì)7 .源碼和說(shuō)明7.1 文件清單及其功能說(shuō)明 7.2 用戶使用說(shuō)明書(shū)7.3 源代碼實(shí)驗(yàn)四.面向?qū)ο蟮恼完?duì)列編程 1 .需求分析
3、 1.1 題目要求 1.2 需求分析2 .系統(tǒng)設(shè)計(jì)3 .軟件開(kāi)發(fā)4 .軟件測(cè)試5 .特點(diǎn)與不足5.1 技術(shù)特點(diǎn)5.2 不足和改進(jìn)的建議6 .過(guò)程和體會(huì)6.1 遇到的主要問(wèn)題和解決方法 6.2 課程設(shè)計(jì)的體會(huì)7.源碼和說(shuō)明1.1 題目要求 1.2 需求分析2 .系統(tǒng)設(shè)計(jì)3 .軟件開(kāi)發(fā)4 .軟件測(cè)試5 .特點(diǎn)與不足5.1 技術(shù)特點(diǎn)5.2 不足和改進(jìn)的建議6 .過(guò)程和體會(huì)6.1 遇到的主要問(wèn)題和解決方法 6.2 課程設(shè)計(jì)的體會(huì)7 .源碼和說(shuō)明7.1 文件清單及其功能說(shuō)明 7.2 用戶使用說(shuō)明書(shū)7.3 源代碼實(shí)驗(yàn)六.基于繼承的整型隊(duì)列編程 1 .需求分析 1.1 題目要求 1.2 需求分析2 .系統(tǒng)設(shè)
4、計(jì)3 .軟件開(kāi)發(fā)4 .軟件測(cè)試5 .特點(diǎn)與不足5.1 技術(shù)特點(diǎn)5.2 不足和改進(jìn)的建議6 .過(guò)程和體會(huì)6.1 遇到的主要問(wèn)題和解決方法 6.2 課程設(shè)計(jì)的體會(huì)7 .源碼和說(shuō)明7.1 文件清單及其功能說(shuō)明 7.2 用戶使用說(shuō)明書(shū)7.3 源代碼實(shí)驗(yàn)一.面向過(guò)程的整型棧編程1 .需求分析1.1 題目要求整型棧是一種先進(jìn)后出的存儲(chǔ)結(jié)構(gòu),對(duì)其進(jìn)行的操作通常包括判斷棧是否 為空、向棧頂添加一個(gè)整型元素、出棧等。整型棧類型及其操作函數(shù)采用非面 向?qū)ο蟮募僀語(yǔ)言定義,請(qǐng)將完成上述操作的所有函數(shù)采用面向過(guò)程的方法編 程,然后寫一個(gè)main函數(shù)對(duì)棧的所有操作函數(shù)進(jìn)行測(cè)試。struct STACKint*elems
5、;申請(qǐng)內(nèi)存用于存放棧的元素intmax;/棧能存放的最大元素個(gè)數(shù)intpos;/棧實(shí)際已有元素個(gè)數(shù),??諘r(shí)pos=0;;void initSTACK(STACK *const p, int m);/ 初始化 p 指空棧:可存 m 個(gè)元素 void initSTACK(STACK *const p, const STACK&s); / 用 s 初始化 p 指空棧 int size (const STACK *const p);/返回p指的棧的最大元素個(gè)數(shù) maxint howMany (const STACK *const p); /返回p指的棧的實(shí)際元素個(gè)數(shù) pos int getel
6、em (const STACK *const p, int x); /取下標(biāo) x 處的棧元素 STACK *const push(STACK *const p, int e); I陷 e 入棧,并返回 p STACK *const pop(STACK *const p, int &e); / 出棧至U e,并返回 pSTACK *const assign(STACK*const p, const STACK&s);/ 賦給 p 指棧,返回 p void print(const STACK*const p);/打印 p 指向的棧元素void destroySTACK(STACK*
7、const p); 銷毀 p 指向的棧,釋放1.2 需求分析本實(shí)驗(yàn)需要實(shí)現(xiàn)棧的功能的操作,如元素的進(jìn)棧,連續(xù)進(jìn)棧,出棧和連續(xù) 出棧,所以需要設(shè)計(jì)兩個(gè)棧,在完成初始化后直接在程序里給定棧內(nèi)元素。2 .系統(tǒng)設(shè)計(jì)2.1 概要設(shè)計(jì)函數(shù)結(jié)構(gòu)圖見(jiàn)圖1.1圖i.i總體流程圖見(jiàn)圖1.2圖1.22.2 詳細(xì)設(shè)計(jì)void initSTACK(STACK *const p, int m)入口參數(shù):int m出口參數(shù):無(wú)功能:初始化棧,可存m個(gè)元素void initSTACK(STACK *const p, const STACK&s) 入 口 參數(shù):const STACK&s出口參數(shù):無(wú)功能:用s初
8、始化p指空棧int size (const STACK *const p)入口參數(shù):無(wú)出口參數(shù):int max功能:返回p指的棧的最大元素個(gè)數(shù)maxint howMany (const STACK *const p)入口參數(shù):無(wú)出口參數(shù):int pos功能:返回p指的棧的實(shí)際元素個(gè)數(shù)posint getelem (const STACK *const p, int x) 入口參數(shù):int x出口參數(shù):elemm功能:取下標(biāo)x處的棧元素STACK *const push(STACK *const p, int e)入口參數(shù):int e出口參數(shù):(*this)功能:將e入棧,并返回pSTACK *
9、const pop(STACK *const p, int &e)入口參數(shù):int &e 出口參數(shù):(*this)功能:出棧到e,并返回pSTACK *const assign(STACK*const p, const STACK&s) 入口參數(shù):STACK&s 出口參數(shù):(*this)功能:賦s給p指棧,返回pvoid print(const STACK*const p)入口參數(shù):無(wú)出口參數(shù):無(wú)功能:打印p指向的棧元素void destroySTACK(STACK*const p)入口參數(shù):出口參數(shù):功能:銷毀p指向的棧,釋放3 .軟件開(kāi)發(fā)在Codeblock
10、s編譯環(huán)境下,使用 C+語(yǔ)言編寫。4 .軟件測(cè)試測(cè)試結(jié)果見(jiàn)圖1.3圖1.35 .特點(diǎn)與不足5.1 技術(shù)特點(diǎn)完成了實(shí)驗(yàn)的所有要求,沒(méi)有錯(cuò)誤的地方。5.2 不足和改進(jìn)的建議沒(méi)有做人機(jī)交互界面,無(wú)法自由選擇入棧的數(shù)據(jù);同時(shí)注釋較少,對(duì)于程 序不了解的人可能需要花費(fèi)更多時(shí)間去了解。6 .過(guò)程和體會(huì)6.1 遇到的主要問(wèn)題和解決方法輸出結(jié)果數(shù)字與預(yù)計(jì)不同,檢查后發(fā)現(xiàn)原因是變量初始值未設(shè)置。6.2 課程設(shè)計(jì)的體會(huì)本次實(shí)驗(yàn)主要還是通過(guò)回顧C(jī)語(yǔ)言中棧的知識(shí)完成在C+上的編程,所以 總體過(guò)程沒(méi)有出現(xiàn)太大的問(wèn)題;同時(shí)也對(duì)const變量有了進(jìn)一步的認(rèn)識(shí)。7 .源碼和說(shuō)明7.1 文件清單及其功能說(shuō)明experiment
11、l.cpp 源碼experiment1.exe 可執(zhí)行文件。7.2 用戶使用說(shuō)明書(shū)experiment1.cpp是程序的源碼,可通過(guò)修改其中 main函數(shù)中的變量來(lái)測(cè)試 各個(gè)函數(shù)。7.3 源代碼#include<stdio.h>#include<malloc.h>#include<stdlib.h>struct STACKint *elems; 申請(qǐng)內(nèi)存用于存放棧的元素int max;/棧能存放的最大元素個(gè)數(shù)int pos;/棧實(shí)際已有元素個(gè)數(shù),??諘r(shí) pos=0;;/初始化p指向的棧:最void initSTACK(STACK *const p, int
12、m);多m個(gè)元素void initSTACK(STACK *const p, const STACK&s); 用棧 s 初始化 p 指 向的棧/返回p指向的棧的最大元素int size (const STACK *const p); 個(gè)數(shù)maxint howMany (const STACK *const p);/返回p指向的棧的實(shí)際元素個(gè)數(shù)pos/取下標(biāo)x處的棧元/將e入棧,并返回p/出棧到e,并返回pint getelem (const STACK *const p, int x);素STACK *const push(STACK *const p, int e);STACK *c
13、onst pop(STACK *const p, int &e);STACK *const assign(STACK*const p, const STACK&s); / 賦 s 給 p 指的 棧,并返回pvoid print(const STACK*const p);/ 打印 p 指向的棧void destroySTACK(STACK*const p);/ 銷毀 p 指向的棧int main(int argc, char* argv口)STACK *s1 = (STACK *)malloc(sizeof(STACK);STACK *s2 = (STACK *)malloc(s
14、izeof(STACK); initSTACK(s1,10);push(s1,1);push(s1,2);push(push(s1,3),4);initSTACK(s2,*s1);print(s2);printf(" 棧 s1:n");print(s1);/assign(s2,*s1);printf(" 棧 s2:n");print(s2);int a,b,c;a = size(s1);printf("棧的最大元素個(gè)數(shù)是dn",a);b = howMany(sl);printf("棧的實(shí)際元素個(gè)數(shù)是 dn",b);
15、c = getelem(s1,3);printf("3 處棧元素是是dn",c);int x,y,z;pop(s2,x);pop(pop(s2,y),z);printf("x= %d, y= %d, z= %d n",x,y,z);destroySTACK(s2);destroySTACK(sl);getchar();return 0;void initSTACK(STACK *const p, int m) / 初始化 p 指向的棧:最多 m 個(gè)元素p->elems = (int*)malloc(m*sizeof(int*);if(!p->
16、elems)return;p->pos = 0;p->max = m;int i;for(i=0;i<(p->max);i+)p->elemsi = 0;void initSTACK(STACK *const p, const STACK&s) 用棧 s 初始化 p 指 向的棧p->elems = (int*)malloc(s.max)*sizeof(int);p->pos = s.pos;p->max = s.max;int i;for(i=0;i<(s.pos);i+) p->elemsi=s.elemsi;printf(
17、"%dn",p->elemsi);int size (const STACK *const p) 個(gè)數(shù)max return p->max;int howMany (const STACK *const p) 個(gè)數(shù)pos return p->pos;int getelem (const STACK *const p, int x) 素if(p=NULL) return NULL; else if(x>(p->pos)printf("不存在元素n");elsereturn p->elemsx;STACK *const pu
18、sh(STACK *const p, int e) /返回p指向的棧的最大元素/返回p指向的棧的實(shí)際元素/取下標(biāo)x處的棧元/將e入棧,并返回pif(p=NULL) return NULL; elseif(p->pos)<=(p->max)p->elemsp->pos=e;p->pos+; return p; else printf(" 棧滿 n");STACK *const pop(STACK *const p, int &e)/ 出棧至U e,并返回 pif(p=NULL) return NULL; else if(p->
19、pos)=0)printf(" 棧為空 n"); elsee=p->elems(p->pos)-1;(p->pos)-; return p;STACK *const assign(STACK*const p, const STACK&s) / 賦 s 給 p 指的 棧,并返回pif(p=NULL | &s=NULL) return NULL; elsefree(p->elems);/free(p);/STACK *p = (STACK *)malloc(sizeof(STACK);initSTACK(p,s);return p;voi
20、d print(const STACK*const p)/ 打印 p 指向的棧int i;if(p = NULL) return;else if(p->pos = 0)printf(" 棧為空 n"); else for(i=0;i<(p->pos);i+)printf("%d ",p->elemsi); printf("n"); void destroySTACK(STACK*const p) / 銷毀 p 指向的棧free(p->elems);free(p);printf("棧已銷毀 n&q
21、uot;);實(shí)驗(yàn)二.面向?qū)ο蟮恼蜅>幊? .需求分析1.1 題目要求整型棧是一種先進(jìn)后出的存儲(chǔ)結(jié)構(gòu),對(duì)其進(jìn)行的操作通常包括判斷棧是否 為空、向棧頂添加一個(gè)整型元素、出棧等。整型棧類型及其操作函數(shù)采用面向 對(duì)象的C+郵言定義,請(qǐng)將完成上述操作的所有函數(shù)采用C+魏程,然后寫class STACKint *const elems; const int max;int pos;public:STACK(int m);個(gè)main函數(shù)對(duì)棧的所有操作函數(shù)進(jìn)行測(cè)試。申請(qǐng)內(nèi)存用于存放棧的元素/棧能存放的最大元素個(gè)數(shù)/棧實(shí)際已有元素個(gè)數(shù),棧空時(shí)pos=0;/初始化棧:最多m個(gè)元素STACK(const STAC
22、K&s); 用棧s拷貝初始化棧int size ( ) const;/返回棧的最大元素個(gè)數(shù) maxint howMany ( ) const; /返回棧的實(shí)際元素個(gè)數(shù) posint getelem (int x) const;/ 取下標(biāo) x 處的棧元素STACK& push(int e);/將e入棧,并返回棧STACK& pop(int &e);/ 出棧至U e,并返回棧STACK& assign(const STACK&s); / 賦s給棧,并返回被賦值的棧void print( ) const;/ 打印棧STACK();銷毀棧;1.2 需求分
23、析采用面向?qū)ο蟮腃+語(yǔ)言定義整型棧,對(duì)其進(jìn)行的操作通常包括判斷棧是 否為空、向棧頂添加一個(gè)整型元素、出棧等。2 .系統(tǒng)設(shè)計(jì)2.1 概要設(shè)計(jì)首先需要定義一個(gè)類來(lái)實(shí)現(xiàn)棧,然后依次實(shí)現(xiàn)棧的各個(gè)功能,在主函數(shù)中 給定一個(gè)棧然后,然后通過(guò)函數(shù)調(diào)用實(shí)現(xiàn)棧的功能。2.2 詳細(xì)設(shè)計(jì)STACK(int m)功能:初始化棧:最多 m個(gè)元素返回值:無(wú)STACK(const STACK&s)功能:用棧s拷貝初始化棧返回值:無(wú)int size ( ) const功能:返回棧的最大元素個(gè)數(shù) max返回值:最大元素個(gè)數(shù)maxint howMany ( ) const功能:返回棧的實(shí)際元素個(gè)數(shù) pos返回值:元素?cái)?shù)目
24、posint getelem (int x) const功能:取下標(biāo)x處的棧元素返回值:下標(biāo)為x的元素STACK& push(int e)功能:將e入棧返回值:棧的引用STACK& pop(int &e)功能:出棧到e,并返回棧返回值:棧的引用STACK& assign(const STACK&s)功能:使用棧s給棧p賦值返回值:棧的引用void print( ) const功能:打印棧返回值:無(wú)STACK()功能:銷毀棧返回值:無(wú)3 .軟件開(kāi)發(fā)在Codeblocks編譯環(huán)境下,使用 C+語(yǔ)言編寫。4 .軟件測(cè)試測(cè)試結(jié)果見(jiàn)圖2.1圖2.15 .特點(diǎn)與不足
25、5.1 技術(shù)特點(diǎn)完成了初定目標(biāo),無(wú)其他特點(diǎn)。5.2 不足和改進(jìn)的建議人機(jī)交互需要進(jìn)一步完善。6 .過(guò)程和體會(huì)6.1 遇到的主要問(wèn)題和解決方法由于第一次使用C+面向?qū)ο缶帉懗绦?,開(kāi)始不明白對(duì)象的生成及使用。 在和同學(xué)老師的溝通和交流中,慢慢學(xué)會(huì)了編程的方法。6.2 課程設(shè)計(jì)的體會(huì)C+語(yǔ)言與C語(yǔ)言有很多相通的地方,所以其中的某些原理和方法可以互 相借鑒,這樣就減少了在理解上的難度。7 .源碼和說(shuō)明7.1 文件清單及其功能說(shuō)明experiment2.cpp 源碼experiment2.exe 可 執(zhí)行文件。7.2 用戶使用說(shuō)明書(shū)experiment2.cpp是程序的源碼,可通過(guò)修改其中 main函數(shù)
26、中的變量來(lái)測(cè)試 各個(gè)函數(shù)。7.3 源代碼#include <iostream>#include <string>using namespace std;class STACKint *const elems;申請(qǐng)內(nèi)存用于存放棧的元素const int max; /棧能存放的最大元素個(gè)數(shù)7.4 pos;/棧實(shí)際已有元素個(gè)數(shù),??諘r(shí) pos=0;public:STACK(int m);/初始化棧:最多m個(gè)元素STACK(const STACK&s); /用棧s拷貝初始化棧int size ( ) const;/返回棧的最大元素個(gè)數(shù) maxint howMany (
27、) const; /返回棧的實(shí)際元素個(gè)數(shù) posint getelem (int x) const; 取下標(biāo)x處的棧元素STACK& push(int e);/將e入棧,并返回棧STACK& pop(int &e);出棧到e,并返回棧STACK& assign(const STACK&s); /賦s給棧,并返回被賦值的棧void print( ) const; 打印棧STACK( );/銷毀棧;STACK:STACK(int m):elems(new intm),max(m),pos(0)STACK:STACK(const STACK&s):el
28、ems(newints.size(),max(s.size(),pos(s.howMany()for(int i=0;i<pos;i+)elemsi=s.getelem(i);cout<<”復(fù)制構(gòu)造成功"<<endl;int STACK:size() constreturn max;int STACK:howMany() constreturn pos;int STACK:getelem (int x) constreturn elemsx;STACK& STACK:push(int e)if(pos<max)elemspos=e;pos+
29、;else cout<<"fulln"return *this;STACK& STACK二pop(int &e)if(pos=0)cout<<"empty stack”;return *this;pos-;e = elemspos;cout<<"出棧成功"return *this;STACK& STACK:assign(const STACK&s) int i;delete elems;/ elems = new int s.size();/ max = s.size();po
30、s = s.howMany();for(i=0;i<s.howMany();i+) elemsi = s.getelem(i); return *this;void STACK二print( ) constint i;cout<<"棧的元素為:"for(i=0;i<pos;i+) cout<<elemsi<<" "cout<<endl;STACK:STACK() delete elems;/ elems= 0;/ max = 0;pos = 0;cout<<"析構(gòu)完成&qu
31、ot;int main()STACKs;s.push(5);s.push;s.push(9);s.push(11);s.print();int i;s.pop(i);cout<<"出棧元素"<<i<<endl;STACK p(s);cout<<"容量"<<p.size()<<endl;cout<<"當(dāng)前元素?cái)?shù)目"<<p.howMany();class STACKint *const elems; const int max;int pos;
32、public:STACK(int m);STACK(const STACK&s);virtual int size ( ) const;virtual operator int ( ) const;virtual int operator (int x) const;/ virtual STACK& operator<<(int e);virtual STACK& operator>>(int &e);/用棧s拷貝初始化棧/返回棧的最大元素個(gè)數(shù) max/返回棧的實(shí)際元素個(gè)數(shù)pos取下標(biāo)x處的棧元素/將e入棧,并返回棧/出棧到e,并返回棧實(shí)
33、驗(yàn)三.基于算符重載的整型棧編程1 .需求分析1.1 題目要求整型棧是一種先進(jìn)后出的存儲(chǔ)結(jié)構(gòu),對(duì)其進(jìn)行的操作通常包括判斷棧是否 為空、向棧頂添加一個(gè)整型元素、出棧等。整型棧類型及其操作函數(shù)采用面向 對(duì)象的C+郵言定義,請(qǐng)將完成上述操作的所有函數(shù)采用C+魏程,然后寫個(gè)main函數(shù)對(duì)棧的所有操作函數(shù)進(jìn)行測(cè)試。申請(qǐng)內(nèi)存用于存放棧的元素/棧能存放的最大元素個(gè)數(shù)/棧實(shí)際已有元素個(gè)數(shù),棧空時(shí)pos=0;/初始化棧:最多m個(gè)元素virtual STACK& operator=(const STACK&s);/ 賦 s 給棧,并返回被賦值的棧virtual void print( ) const
34、;/ 打印棧virtual STACK( );/ 銷毀棧;1.2 需求分析采用面向?qū)ο蟮腃+語(yǔ)言定義,構(gòu)建整型棧并對(duì)其進(jìn)行判斷棧是否為空、 向棧頂添加一個(gè)整型元素、出棧等操作。2 .系統(tǒng)設(shè)計(jì)2.1 概要設(shè)計(jì)首先需要定義一個(gè)類來(lái)實(shí)現(xiàn)棧,然后依次實(shí)現(xiàn)棧的各個(gè)功能,在主函數(shù)中 給定一個(gè)棧然后,然后通過(guò)函數(shù)調(diào)用實(shí)現(xiàn)棧的功能。2.2 詳細(xì)設(shè)計(jì)初始化定義一個(gè)類,分配一個(gè)數(shù)組空間來(lái)存儲(chǔ)棧內(nèi)元素信息,然后初始化為0;實(shí)現(xiàn)入棧則需要將入棧元素e放入棧內(nèi),采用了先判斷棧的最大容量夠 不夠的問(wèn)題,如果不夠重新分配空間,并且讓 e入棧,將當(dāng)前元素pos加 一;然后返回棧結(jié)構(gòu)。實(shí)現(xiàn)出棧操作,首先判斷是不是空,若空直接返
35、回,不空則需將棧頂?shù)脑?素賦給一個(gè)變量然后將當(dāng)前元素 pos減一;返回棧結(jié)構(gòu)。實(shí)現(xiàn)棧的賦給即需要將si棧內(nèi)的元素依次賦給s2棧的,當(dāng)前元素也需一 致并且返回新的棧結(jié)構(gòu)。3 .軟件開(kāi)發(fā)在Codeblocks編譯環(huán)境下,使用 C+語(yǔ)言編寫。4 .軟件測(cè)試測(cè)試結(jié)果見(jiàn)圖3.1圖3.15 .特點(diǎn)與不足5.1 技術(shù)特點(diǎn)使用了符號(hào)重載,在一定程度上簡(jiǎn)化了函數(shù)。5.2 不足和改進(jìn)的建議在使用符號(hào)重載時(shí)需要特別注意,防止與其他操作符混淆。6 .過(guò)程和體會(huì)6.1 遇到的主要問(wèn)題和解決方法對(duì)于符號(hào)重載,剛開(kāi)始不會(huì)調(diào)用函數(shù),之后通過(guò)查閱書(shū)籍,明白了重載的 含義。6.2 課程設(shè)計(jì)的體會(huì)本次實(shí)驗(yàn)以實(shí)驗(yàn)二為基礎(chǔ),通過(guò)使用符
36、號(hào)重載來(lái)更簡(jiǎn)單的實(shí)現(xiàn)實(shí)驗(yàn)?zāi)康摹? .源碼和說(shuō)明7.1 文件清單及其功能說(shuō)明experiment3.cpp 源碼experiment3.exe 可執(zhí)行文件。7.2 用戶使用說(shuō)明書(shū)experiment3.cpp是程序的源碼,可通過(guò)修改其中 main函數(shù)中的變量來(lái)測(cè)試 各個(gè)函數(shù)。7.3 源代碼#include <iostream>#include <string>using namespace std;class STACKint *const elems;申請(qǐng)內(nèi)存用于存放棧的元素const int max; /棧能存放的最大元素個(gè)數(shù)int pos;/棧實(shí)際已有元素個(gè)數(shù),???/p>
37、時(shí) pos=0;public:STACK(int m);/初始化棧:最多m個(gè)元素STACK(const STACK&s);用棧s拷貝初始化棧virtual int size ( ) const;/返回棧的最大元素個(gè)數(shù) maxvirtual operator int () const;/返回棧的實(shí)際元素個(gè)數(shù) posvirtual int operator (int x) const;/取下標(biāo) x 處的棧元素virtual STACK& operator<<(int e);/將 e 入棧,并返回棧virtual STACK& operator>>(i
38、nt &e); 出棧到 e,并返回棧virtual STACK& operator=(const STACK&s); / 賦 s 給棧,并返回被賦值的棧virtual void print( ) const;打印棧virtual STACK();銷毀棧;STACK:STACK(int m):elems(new intm),max(m),pos(0)STACK:STACK(const STACK&s):elems(newints.max),max(s.max),pos(s.pos)for(int i=0;i<pos;i+)elemsi=s.elemsi;in
39、t STACK:size ( ) constreturn max;STACK:operator int () constreturn pos;int STACK:operator (int x) constreturn elemsx;STACK& STACK:operator<<(int e)if(pos>max)cout<<"棧滿";else*(elems+pos)=e;pos+;return (*this);STACK& STACK:operator>>(int &e)if(pos=0)cout<&
40、lt;"???quot;;elsee=*(elems+pos-1);pos-;return (*this);STACK& STACK:operator=(const STACK&s) delete elems;*(int*)&elems = new ints.max;*(int*)&max = s.max;for(pos=0;pos<s.pos;pos+)elemspos = s.elemspos;return *this;void STACK二print( ) constfor(int i=0;i<pos;i+) cout<<
41、elemsi<<"n"STACK:STACK()delete elems;if(elems=0)cout<<"銷毀失敗"<<endl; elsecout<<"銷毀成功"<<endl; int main()STACK i(5),j(8);i<<1«3«6«9;int k;i»k;cout«k«"n"i-pnnt();j=i;jprint();j«1<<2«
42、3«4;cout«endl«(int)j;)實(shí)驗(yàn)四.面向?qū)ο蟮恼完?duì)列編程1 .需求分析1.1 題目要求整型隊(duì)列是一種先進(jìn)先出的存儲(chǔ)結(jié)構(gòu),對(duì)其進(jìn)行的操作通常包括判斷隊(duì)列 是否為空、向隊(duì)列頂添加一個(gè)整型元素、出隊(duì)列等。整型隊(duì)列類型及其操作函 數(shù)采用面向?qū)ο蟮腃+郵言定義,請(qǐng)將完成上述操作的所有函數(shù)采用C+編class QUEUEint *const elems; const int max;int head, tail;時(shí) head=tail=0程,然后寫一個(gè)main函數(shù)對(duì)隊(duì)列的所有操作函數(shù)進(jìn)行測(cè)試。申請(qǐng)內(nèi)存用于存放隊(duì)列的元素/隊(duì)列能存放的最大元素個(gè)數(shù)/隊(duì)列頭和尾,
43、隊(duì)列空時(shí)head=tail;初始public:QUEUE(int m);初始化隊(duì)列:最多 m個(gè)元素QUEUE(const QUEUE&s);/用隊(duì)列J s拷貝初始化隊(duì)列virtual operator int ( ) const;/返回隊(duì)列的實(shí)際元素個(gè)數(shù)virtual QUEUE& operator<<(int e)volatile;/ 將 e 入隊(duì)列,并返回隊(duì)列virtual QUEUE& operator>>(int &e)volatile;/ 出隊(duì)列到 e,并返回隊(duì)列virtual QUEUE& operator=(cons
44、t QUEUE&s); / 賦 s 給隊(duì)列,并返回 被賦值的隊(duì)列/打印隊(duì)列/銷毀隊(duì)列virtual void print( ) const;virtual QUEUE();1.2 需求分析本題目用數(shù)組實(shí)現(xiàn)隊(duì)列,需要預(yù)知需要空間的大小,會(huì)造成空間浪費(fèi)或 不夠用;插入或刪除不需要?jiǎng)討B(tài)分配或刪除內(nèi)存,耗時(shí)很??;支持隨機(jī)存 取。2 .系統(tǒng)設(shè)計(jì)定義一個(gè)類,分配一個(gè)數(shù)組空間來(lái)存儲(chǔ)棧內(nèi)元素信息,類中分別定義兩個(gè) int元素表示隊(duì)列的頭和尾,入棧的時(shí)候,頭加一;出棧的時(shí)候,尾加一。3 .軟件開(kāi)發(fā)在Codeblocks編譯環(huán)境下,使用 C+語(yǔ)言編寫。4 .軟件測(cè)試測(cè)試結(jié)果見(jiàn)圖4.1圖4.15 .特點(diǎn)與不
45、足5.1 技術(shù)特點(diǎn)通過(guò)創(chuàng)建隊(duì)列類QUEUE完成了隊(duì)列的構(gòu)造析構(gòu)等諸多功能;同時(shí)再次運(yùn) 用重載操作符方便了入隊(duì)出隊(duì)等操作的完成。5.2 不足和改進(jìn)的建議隊(duì)列一旦生成則無(wú)法改變。6 .過(guò)程和體會(huì)6.1 遇到的主要問(wèn)題和解決方法如何構(gòu)建一個(gè)循環(huán)隊(duì)列,解決方法利用求余的方法,當(dāng)頭結(jié)點(diǎn)大于最大元 素的時(shí)候,除以最大元素求余,重新的得到頭結(jié)點(diǎn)。6.2 課程設(shè)計(jì)的體會(huì)本次實(shí)驗(yàn)使用面向?qū)ο蟮姆椒▉?lái)編寫一個(gè)隊(duì)列,讓我對(duì)隊(duì)列的構(gòu)建以及對(duì) 其進(jìn)行一些列的操作有了更進(jìn)一步的了解。與前幾次棧的實(shí)驗(yàn)相比,難度有所 增加,但更鍛煉了個(gè)人能力。7 .源碼和說(shuō)明7.1 文件清單及其功能說(shuō)明experiment4.cpp 源碼e
46、xperiment4.exe 可執(zhí)行文件。7.2 用戶使用說(shuō)明書(shū)experiment4.cpp是程序的源碼,可通過(guò)修改其中 main函數(shù)中的變量來(lái)測(cè)試 各個(gè)函數(shù)。7.3 源代碼#include <iostream>#include <string>using namespace std;class QUEUEint *const elems;申請(qǐng)內(nèi)存用于存放隊(duì)列的元素const int max; /隊(duì)列能存放的最大元素個(gè)數(shù) int head, tail; /隊(duì)列頭和尾,隊(duì)列空時(shí) head=tail初始時(shí) head=tail=0public:QUEUE(int m);/初
47、始化隊(duì)列:最多 m個(gè)元素QUEUE(const QUEUE&s);用隊(duì)列s拷貝初始化隊(duì)列virtual operator int ( ) const;/返回隊(duì)列的實(shí)際元素個(gè)數(shù)virtual QUEUE& operator<<(int e); 將 e 入隊(duì)歹!J,并返回隊(duì)歹U virtual QUEUE& operator>>(int &e); / 出隊(duì)列到 e,并返回隊(duì)列 virtual QUEUE& operator=(const QUEUE&s); / 賦 s給隊(duì)列,并返回被賦值的 隊(duì)列virtual void pri
48、nt( ) const;打印隊(duì)歹 Uvirtual QUEUE();銷毀隊(duì)列;QUEUE:QUEUE(int m):elems(new intm),max(m),head(0),tail(0)QUEUE:QUEUE(const QUEUE&s):elems(new ints.max),max(s.max),head(s.head),tail(s.tail) for(int i=head;i<tail;i+)elemsi=s.elemsi;;QUEUE二operato門nt () constif(tail>=head)return (tail-head);return (ma
49、x-head+tail);QUEUE& QUEUE:operator<<(int e)if(tail+1)%max=head)cout<<”隊(duì)列滿 n”; elseelemstail=e;tail+; return (*this);QUEUE& QUEUE:operator>>(int &e) if(head=tail) cout<<”隊(duì)列空 n" elsee=elemshead;head=(head+)%max; return(*this);QUEUE& QUEUE:operator=(const QU
50、EUE&s) delete elems;*(int*)&elems = new ints.max;*(int*)&max = s.max;head = s.head;tail = s.tail;for(int i=head;i<tail;i+) elemsi=s.elemsi;cout<<"賦值成功n"return *this;void QUEUE:print( ) const if(head=tail)cout<<"Emptyn"cout<<"隊(duì)列元素為:"if(he
51、ad<tail)for(int i=head;i<tail;i+)cout<<elemsi<<"t"elsefor(int i=head;i<max+1;i+) cout<<elemsi<<"t"for(int i=0;i<tail;i+)cout<<elemsi<<"t"cout<<"n"QUEUE:QUEUE( )delete elems;*(int*)&elems = 0;*(int*)&
52、;max =0;head = tail =0;int main()QUEUE q(5);q<<2<<5<<8;cout<<"元素?cái)?shù)目"<<(int)q<<endl;QUEUE p(q);p.print();int i;q>>i;cout<<"出隊(duì)元素"<<i<<endl;q.print();)實(shí)驗(yàn)五.基于組合的整型隊(duì)列編程1 .需求分析1.1 題目要求整型隊(duì)列是一種先進(jìn)先出的存儲(chǔ)結(jié)構(gòu),對(duì)其進(jìn)行的操作通常包括判斷隊(duì)列 是否為空、向隊(duì)列頂添
53、加一個(gè)整型元素、出隊(duì)列等。整型隊(duì)列類型及其操作函 數(shù)采用面向?qū)ο蟮腃+郵言定義,請(qǐng)將完成上述操作的所有函數(shù)采用C+編程,然后寫一個(gè)main函數(shù)對(duì)隊(duì)列的所有操作函數(shù)進(jìn)行測(cè)試。注意,請(qǐng)用實(shí)驗(yàn) 三的SATCK&合形成新的類QUEUE請(qǐng)說(shuō)明如果刪掉virtual有什么不同。class QUEUESTACK s1, s2; public:QUEUE(int m);初始化隊(duì)列:每個(gè)棧最多 m個(gè)元素QUEUE(const QUEUE&s);/用隊(duì)列J s拷貝初始化隊(duì)列virtual operator int ( ) const;/返回隊(duì)列的實(shí)際元素個(gè)數(shù)virtual QUEUE& o
54、perator<<(int e);/ 將 e 入隊(duì)列,并返回隊(duì)列virtual QUEUE& operator>>(int &e);出隊(duì)列到 e,并返回隊(duì)列virtual QUEUE& operator=(const QUEUE&s); / 賦 s 給隊(duì)列,并返回 被賦值的隊(duì)列virtual void print( ) const;/ 打印隊(duì)歹!Jvirtual QUEUE( );/ 銷毀隊(duì)列;1.2 需求分析采用面向?qū)ο蟮腃+語(yǔ)言定義,構(gòu)建整型隊(duì)列并對(duì)其進(jìn)行的操作通常包括 判斷隊(duì)列是否為空、向隊(duì)列頂添加一個(gè)整型元素、出隊(duì)列等,再寫一個(gè)
55、main 函數(shù)對(duì)隊(duì)列的所有操作函數(shù)進(jìn)行測(cè)試。2 .系統(tǒng)設(shè)計(jì)用兩個(gè)棧實(shí)現(xiàn)隊(duì)列,先判棧 S2是否為空,如果為空,對(duì) S1進(jìn)行入棧操 作,如果不是空,棧S2數(shù)據(jù)元素倒入到S1,然后對(duì)S1進(jìn)行入棧操作。出隊(duì)列時(shí)。判斷S2是否為空,如果非空S2中的元素出棧,若果為空,把S1的元素倒入到S2, XtS2的元素進(jìn)行出棧操作3 .軟件開(kāi)發(fā)在Codeblocks編譯環(huán)境下,使用 C+語(yǔ)言編寫。4 .軟件測(cè)試測(cè)試結(jié)果見(jiàn)圖5.1圖5.15 .特點(diǎn)與不足5.1 技術(shù)特點(diǎn)基本功能已完成,無(wú)其他特點(diǎn)。5.2 不足和改進(jìn)的建議代碼可能有點(diǎn)繁瑣,所以可以對(duì)代碼進(jìn)行一些精簡(jiǎn)操作。6 .過(guò)程和體會(huì)6.1 遇到的主要問(wèn)題和解決方法
56、在棧與隊(duì)列的轉(zhuǎn)換問(wèn)題上理解有誤,后在同學(xué)的講解下明白了問(wèn)題及如何 修改6.2 課程設(shè)計(jì)的體會(huì)對(duì)隊(duì)列的結(jié)構(gòu)有了了解,同時(shí)也理解了棧與隊(duì)列的聯(lián)系。7 .源碼和說(shuō)明7.1 文件清單及其功能說(shuō)明experiment5.cpp 源碼experiment5.exe 可執(zhí)行文件。7.2 用戶使用說(shuō)明書(shū)experiment5.cpp是程序的源碼,可通過(guò)修改其中 main函數(shù)中的變量來(lái)測(cè)試 各個(gè)函數(shù)。7.3 源代碼#include <iostream>#include <string>using namespace std;class STACKint *const elems;申請(qǐng)內(nèi)存用于存放棧的元素const int max; /棧能存放的最大元素個(gè)數(shù)int pos;/棧實(shí)際已有元素個(gè)數(shù),??諘r(shí) pos=0;public:STACK(int m);/初始化棧:最多m個(gè)元素STACK(const STACK&s);用棧s拷貝初始化棧virtual int size ( ) const;/返回棧的最大元素個(gè)數(shù) maxvirtual operator int () const;/返回棧的實(shí)際元素個(gè)數(shù) posvirtual int operator (int x) const;/取下標(biāo)
溫馨提示
- 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ì)自己和他人造成任何形式的傷害或損失。
最新文檔
- 出租鐵床改造合同范本
- 廠區(qū)綠化管護(hù)合同范本
- 課題申報(bào)書(shū)ai怎么寫的
- 作文評(píng)價(jià)研究課題申報(bào)書(shū)
- 光纖熔接勞務(wù)合同范本
- 公司建筑材料租賃合同范本
- 醫(yī)療耗材中標(biāo)合同范本
- 醫(yī)生自費(fèi)進(jìn)修合同范本
- 中德儲(chǔ)蓄合同范本
- 課程評(píng)價(jià)課題申報(bào)書(shū)
- 孕前口腔護(hù)理保健
- 《民航服務(wù)與溝通學(xué)》課件-第1講 服務(wù)與民航服務(wù)的概念
- 診所與醫(yī)生合作協(xié)議
- 大型養(yǎng)路機(jī)械司機(jī)(打磨車)高級(jí)工技能鑒定考試題庫(kù)(含答案)
- 車輛使用不過(guò)戶免責(zé)協(xié)議書(shū)范文范本
- 蟾蜍毒抗病毒藥物篩選
- DB11T 2033-2022 餐廚垃圾源頭減量操作要求
- 1.2 歌曲 《春天來(lái)了》 課件(11張)
- 【人教版】pep六年級(jí)英語(yǔ)下全冊(cè)教案(表格版)
- 護(hù)理培訓(xùn)師競(jìng)聘
- 北師大版小學(xué)數(shù)學(xué)五年級(jí)下冊(cè)同步課時(shí)練習(xí)試題含答案(全冊(cè))
評(píng)論
0/150
提交評(píng)論