




版權(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) 告課程名稱(chēng):面向?qū)ο蟪绦蛟O(shè)計(jì)院 系 : 專(zhuān)業(yè)班級(jí) : 學(xué) 號(hào) : 姓 名 : 指導(dǎo)教師 : 目 錄實(shí)驗(yàn)一.面向過(guò)程的整型棧編程11.需求分析11.1題目要求11.2需求分析12.系統(tǒng)設(shè)計(jì)22.1概要設(shè)計(jì)22.2詳細(xì)設(shè)計(jì)34.軟件測(cè)試45.特點(diǎn)與不足45.1技術(shù)特點(diǎn)45.2不足和改進(jìn)的建議56.過(guò)程和體會(huì)56.1遇到的主要問(wèn)題和解決方法56.2課程設(shè)計(jì)的體會(huì)57.源碼和說(shuō)明57.1文件清單及其功能說(shuō)明57.2用戶使用說(shuō)明書(shū)57.3源代碼5實(shí)驗(yàn)二.面向?qū)ο蟮恼蜅>幊?21.需求分析121.1題目要求121.2需求分析122.系統(tǒng)設(shè)計(jì)132.1概要設(shè)計(jì)132.2詳細(xì)設(shè)計(jì)
2、133.軟件開(kāi)發(fā)144.軟件測(cè)試145.特點(diǎn)與不足145.1技術(shù)特點(diǎn)145.2不足和改進(jìn)的建議156.過(guò)程和體會(huì)156.1遇到的主要問(wèn)題和解決方法156.2課程設(shè)計(jì)的體會(huì)157.源碼和說(shuō)明157.1文件清單及其功能說(shuō)明157.2用戶使用說(shuō)明書(shū)157.3源代碼15實(shí)驗(yàn)三.基于算符重載的整型棧編程191.需求分析191.1題目要求191.2需求分析192.系統(tǒng)設(shè)計(jì)202.1概要設(shè)計(jì)202.2詳細(xì)設(shè)計(jì)203.軟件開(kāi)發(fā)204.軟件測(cè)試205.特點(diǎn)與不足215.1技術(shù)特點(diǎn)215.2不足和改進(jìn)的建議216.過(guò)程和體會(huì)216.1遇到的主要問(wèn)題和解決方法216.2課程設(shè)計(jì)的體會(huì)217.源碼和說(shuō)明217.1文件
3、清單及其功能說(shuō)明217.2用戶使用說(shuō)明書(shū)217.3源代碼21實(shí)驗(yàn)四. 面向?qū)ο蟮恼完?duì)列編程251.需求分析251.1題目要求251.2需求分析252.系統(tǒng)設(shè)計(jì)263.軟件開(kāi)發(fā)264.軟件測(cè)試265.特點(diǎn)與不足265.1技術(shù)特點(diǎn)265.2不足和改進(jìn)的建議266.過(guò)程和體會(huì)266.1遇到的主要問(wèn)題和解決方法266.2課程設(shè)計(jì)的體會(huì)277.源碼和說(shuō)明277.1文件清單及其功能說(shuō)明277.2用戶使用說(shuō)明書(shū)277.3源代碼27實(shí)驗(yàn)五. 基于組合的整型隊(duì)列編程311.需求分析311.1題目要求311.2需求分析312.系統(tǒng)設(shè)計(jì)313.軟件開(kāi)發(fā)324.軟件測(cè)試325.特點(diǎn)與不足325.1技術(shù)特點(diǎn)325.2
4、不足和改進(jìn)的建議326.過(guò)程和體會(huì)326.1遇到的主要問(wèn)題和解決方法326.2課程設(shè)計(jì)的體會(huì)327.源碼和說(shuō)明337.1文件清單及其功能說(shuō)明337.2用戶使用說(shuō)明書(shū)337.3源代碼33實(shí)驗(yàn)六. 基于繼承的整型隊(duì)列編程371.需求分析371.1題目要求371.2需求分析382.系統(tǒng)設(shè)計(jì)383.軟件開(kāi)發(fā)384.軟件測(cè)試385.特點(diǎn)與不足385.1技術(shù)特點(diǎn)385.2不足和改進(jìn)的建議386.過(guò)程和體會(huì)396.1遇到的主要問(wèn)題和解決方法396.2課程設(shè)計(jì)的體會(huì)397.源碼和說(shuō)明397.1文件清單及其功能說(shuō)明397.2用戶使用說(shuō)明書(shū)397.3源代碼39精選文檔實(shí)驗(yàn)一.面向過(guò)程的整型棧編程1.需求分析1.1
5、題目要求整型棧是一種先進(jìn)后出的存儲(chǔ)結(jié)構(gòu),對(duì)其進(jìn)行的操作通常包括判斷棧是否為空、向棧頂添加一個(gè)整型元素、出棧等。整型棧類(lèi)型及其操作函數(shù)采用非面向?qū)ο蟮募僀語(yǔ)言定義,請(qǐng)將完成上述操作的所有函數(shù)采用面向過(guò)程的方法編程, 然后寫(xiě)一個(gè)main函數(shù)對(duì)棧的所有操作函數(shù)進(jìn)行測(cè)試。struct STACK int *elems;/申請(qǐng)內(nèi)存用于存放棧的元素 int max;/棧能存放的最大元素個(gè)數(shù) int pos;/棧實(shí)際已有元素個(gè)數(shù),??諘r(shí)pos=0;void initSTACK(STACK *const p, int m);/初始化p指空棧:可存m個(gè)元素void initSTACK(STACK *const
6、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ù)posint getelem (const STACK *const p, int x);/取下標(biāo)x處的棧元素STACK *const push(STACK *const p, int e); /將e入棧,并返回pSTACK *const pop(STACK *const p, int &e);/出棧到e,并返回pSTACK *
7、const assign(STACK*const p, const STACK&s);/賦給p指棧,返回pvoid print(const STACK*const p);/打印p指向的棧元素void destroySTACK(STACK*const p);/銷(xiāo)毀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圖1.1總體流程圖見(jiàn)圖1.2圖1.22.2詳細(xì)設(shè)計(jì)void initSTACK(STACK *const p, int m)
8、入口參數(shù):int m出口參數(shù):無(wú)功能:初始化棧,可存m個(gè)元素void initSTACK(STACK *const p, const STACK&s)入口參數(shù):const STACK&s出口參數(shù):無(wú)功能:用s初始化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
9、) 入口參數(shù):int x出口參數(shù):elemm功能:取下標(biāo)x處的棧元素STACK *const push(STACK *const p, int e) 入口參數(shù):int e出口參數(shù):(*this)功能:將e入棧,并返回pSTACK *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(c
10、onst STACK*const p) 入口參數(shù):無(wú)出口參數(shù):無(wú)功能:打印p指向的棧元素void destroySTACK(STACK*const p) 入口參數(shù):出口參數(shù):功能:銷(xiāo)毀p指向的棧,釋放3.軟件開(kāi)發(fā)在Codeblocks編譯環(huán)境下,使用C+語(yǔ)言編寫(xiě)。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.
11、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ō)明experiment1.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 STACK int *elems;/申請(qǐng)內(nèi)存用于存放棧
12、的元素 int max; /棧能存放的最大元素個(gè)數(shù) int pos; /棧實(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ù)posint getelem (const STACK
13、*const p, int x);/取下標(biāo)x處的棧元素STACK *const push(STACK *const p, int e); /將e入棧,并返回pSTACK *const pop(STACK *const p, int &e); /出棧到e,并返回pSTACK *const assign(STACK*const p, const STACK&s); /賦s給p指的棧,并返回pvoid print(const STACK*const p);/打印p指向的棧void destroySTACK(STACK*const p);/銷(xiāo)毀p指向的棧int main(int arg
14、c, char* argv) STACK *s1 = (STACK *)malloc(sizeof(STACK); STACK *s2 = (STACK *)malloc(sizeof(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 =
15、 size(s1); printf("棧的最大元素個(gè)數(shù)是 %dn",a); b = howMany(s1); printf("棧的實(shí)際元素個(gè)數(shù)是 %dn",b); 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(s1); getchar(); return 0;
16、void initSTACK(STACK *const p, int m)/初始化p指向的棧:最多m個(gè)元素 p->elems = (int*)malloc(m*sizeof(int*); if(!p->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
17、)*sizeof(int); p->pos = s.pos; p->max = s.max; int i; for(i=0;i<(s.pos);i+) p->elemsi=s.elemsi; printf("%dn",p->elemsi); int size (const STACK *const p)/返回p指向的棧的最大元素個(gè)數(shù)max return p->max;int howMany (const STACK *const p)/返回p指向的棧的實(shí)際元素個(gè)數(shù)pos return p->pos;int getelem (cons
18、t STACK *const p, int x)/取下標(biāo)x處的棧元素 if(p=NULL) return NULL; else if(x>(p->pos) printf("不存在元素n"); else return p->elemsx; STACK *const push(STACK *const p, int e) /將e入棧,并返回p if(p=NULL) return NULL; else if(p->pos)<=(p->max) p->elemsp->pos=e; p->pos+; return p; else
19、printf("棧滿n"); STACK *const pop(STACK *const p, int &e) /出棧到e,并返回p if(p=NULL) return NULL; else if(p->pos)=0) printf("棧為空n"); else e=p->elems(p->pos)-1; (p->pos)-; return p; STACK *const assign(STACK*const p, const STACK&s) /賦s給p指的棧,并返回p if(p=NULL | &s=NUL
20、L) return NULL; else free(p->elems); /free(p); /STACK *p = (STACK *)malloc(sizeof(STACK); initSTACK(p,s); return p; void 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->e
21、lemsi); printf("n"); void destroySTACK(STACK*const p)/銷(xiāo)毀p指向的棧 free(p->elems); free(p); printf("棧已銷(xiāo)毀n");實(shí)驗(yàn)二.面向?qū)ο蟮恼蜅>幊?.需求分析1.1題目要求整型棧是一種先進(jìn)后出的存儲(chǔ)結(jié)構(gòu),對(duì)其進(jìn)行的操作通常包括判斷棧是否為空、向棧頂添加一個(gè)整型元素、出棧等。整型棧類(lèi)型及其操作函數(shù)采用面向?qū)ο蟮腃+語(yǔ)言定義,請(qǐng)將完成上述操作的所有函數(shù)采用C+編程, 然后寫(xiě)一個(gè)main函數(shù)對(duì)棧的所有操作函數(shù)進(jìn)行測(cè)試。class STACK int *const el
22、ems;/申請(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拷貝初始化棧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 &
23、amp;e); /出棧到e,并返回棧STACK& assign(const STACK&s); /賦s給棧,并返回被賦值的棧void print( ) const;/打印棧STACK( );/銷(xiāo)毀棧;1.2需求分析采用面向?qū)ο蟮腃+語(yǔ)言定義整型棧,對(duì)其進(jìn)行的操作通常包括判斷棧是否為空、向棧頂添加一個(gè)整型元素、出棧等。2.系統(tǒng)設(shè)計(jì)2.1概要設(shè)計(jì)首先需要定義一個(gè)類(lèi)來(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) 功
24、能:用棧s拷貝初始化棧返回值:無(wú)int size ( ) const功能:返回棧的最大元素個(gè)數(shù)max返回值:最大元素個(gè)數(shù)maxint howMany ( ) const功能:返回棧的實(shí)際元素個(gè)數(shù)pos返回值:元素?cái)?shù)目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賦值返回值:棧的引用
25、void print( ) const功能:打印棧返回值:無(wú)STACK( ) 功能:銷(xiāo)毀棧返回值:無(wú)3.軟件開(kāi)發(fā)在Codeblocks編譯環(huán)境下,使用C+語(yǔ)言編寫(xiě)。4.軟件測(cè)試測(cè)試結(jié)果見(jiàn)圖2.1圖2.15.特點(diǎn)與不足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ū)ο缶帉?xiě)程序,開(kāi)始不明白對(duì)象的生成及使用。在和同學(xué)老師的溝通和交流中,慢慢學(xué)會(huì)了編程的方法。6.2課程設(shè)計(jì)的體會(huì)C+語(yǔ)言與C語(yǔ)言有很多相通的地方,所以其中的某些原理和方法可以互相借鑒,這樣就減少了在理解上的難度。7.源碼和說(shuō)明7.
26、1文件清單及其功能說(shuō)明experiment2.cpp源碼experiment2.exe可執(zhí)行文件。7.2用戶使用說(shuō)明書(shū)experiment2.cpp是程序的源碼,可通過(guò)修改其中main函數(shù)中的變量來(lái)測(cè)試各個(gè)函數(shù)。7.3源代碼#include <iostream>#include <string>using namespace std;class STACK int *const elems;/申請(qǐng)內(nèi)存用于存放棧的元素 const int max;/棧能存放的最大元素個(gè)數(shù) int pos;/棧實(shí)際已有元素個(gè)數(shù),??諘r(shí)pos=0;public:STACK(int m);/初
27、始化棧:最多m個(gè)元素STACK(const STACK&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); /出棧到e,并返回棧STACK& assign(const STACK&s); /賦s給棧,并返回被賦值的棧void print( ) const;/打印棧S
28、TACK( );/銷(xiāo)毀棧;STACK:STACK(int m):elems(new intm),max(m),pos(0)STACK:STACK(const STACK&s):elems(new ints.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() const return max;int STACK:howMany() const return p
29、os;int STACK:getelem (int x) const return elemsx;STACK& STACK:push(int e) if(pos<max) elemspos=e; pos+; else cout<<"fulln" return *this;STACK& STACK:pop(int &e) if(pos=0) cout<<"empty stack"return *this; pos-; e = elemspos; cout<<"出棧成功"
30、return *this;STACK& STACK:assign(const STACK&s) int i; delete elems;/ elems = new int s.size();/ max = s.size(); pos = s.howMany(); for(i=0;i<s.howMany();i+) elemsi = s.getelem(i); return *this;void STACK:print( ) const int i; cout<<"棧的元素為:" for(i=0;i<pos;i+) cout<&l
31、t;elemsi<<" " cout<<endl;STACK:STACK() delete elems;/ elems= 0; / max = 0; pos = 0; cout<<"析構(gòu)完成"int main() STACK s(7); s.push(5); s.push(7); s.push(9); s.push(11); s.print(); int i; s.pop(i); cout<<"出棧元素"<<i<<endl; STACK p(s); cout<
32、;<"容量"<<p.size()<<endl; cout<<"當(dāng)前元素?cái)?shù)目"<<p.howMany();實(shí)驗(yàn)三.基于算符重載的整型棧編程1.需求分析1.1題目要求整型棧是一種先進(jìn)后出的存儲(chǔ)結(jié)構(gòu),對(duì)其進(jìn)行的操作通常包括判斷棧是否為空、向棧頂添加一個(gè)整型元素、出棧等。整型棧類(lèi)型及其操作函數(shù)采用面向?qū)ο蟮腃+語(yǔ)言定義,請(qǐng)將完成上述操作的所有函數(shù)采用C+編程, 然后寫(xiě)一個(gè)main函數(shù)對(duì)棧的所有操作函數(shù)進(jìn)行測(cè)試。class STACK int *const elems;/申請(qǐng)內(nèi)存用于存放棧的元素 const i
33、nt 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)x處的棧元素virtual STACK& operator<<(int e); /將e入棧,并返回
34、棧virtual STACK& operator>>(int &e);/出棧到e,并返回棧virtual STACK& operator=(const STACK&s);/賦s給棧,并返回被賦值的棧virtual void print( ) const;/打印棧virtual STACK( );/銷(xiāo)毀棧;1.2需求分析采用面向?qū)ο蟮腃+語(yǔ)言定義,構(gòu)建整型棧并對(duì)其進(jìn)行判斷棧是否為空、向棧頂添加一個(gè)整型元素、出棧等操作。2.系統(tǒng)設(shè)計(jì)2.1概要設(shè)計(jì)首先需要定義一個(gè)類(lèi)來(lái)實(shí)現(xiàn)棧,然后依次實(shí)現(xiàn)棧的各個(gè)功能,在主函數(shù)中給定一個(gè)棧然后,然后通過(guò)函數(shù)調(diào)用實(shí)現(xiàn)棧的功能。
35、2.2詳細(xì)設(shè)計(jì)初始化定義一個(gè)類(lèi),分配一個(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)出棧操作,首先判斷是不是空,若空直接返回,不空則需將棧頂?shù)脑刭x給一個(gè)變量然后將當(dāng)前元素pos減一;返回棧結(jié)構(gòu)。實(shí)現(xiàn)棧的賦給即需要將s1棧內(nèi)的元素依次賦給s2棧的,當(dāng)前元素也需一致并且返回新的棧結(jié)構(gòu)。3.軟件開(kāi)發(fā)在Codeblocks編譯環(huán)境下,使用C+語(yǔ)言編寫(xiě)。4.軟件測(cè)試測(cè)試結(jié)果見(jiàn)圖3.1圖3.15.特點(diǎn)與不足5.1技術(shù)特點(diǎn)使用了符號(hào)重載,在一定程度上簡(jiǎn)
36、化了函數(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ò)使用符號(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 <
37、string>using namespace std;class STACK int *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 operato
38、r (int x) const;/取下標(biāo)x處的棧元素virtual STACK& operator<<(int e); /將e入棧,并返回棧virtual STACK& operator>>(int &e);/出棧到e,并返回棧virtual STACK& operator=(const STACK&s); /賦s給棧,并返回被賦值的棧virtual void print( ) const;/打印棧virtual STACK( );/銷(xiāo)毀棧;STACK:STACK(int m):elems(new intm),max(m),pos
39、(0)STACK:STACK(const STACK&s):elems(new ints.max),max(s.max),pos(s.pos) for(int i=0;i<pos;i+) elemsi=s.elemsi;int 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<
40、<"棧滿" else *(elems+pos)=e; pos+; return (*this);STACK& STACK:operator>>(int &e) if(pos=0) cout<<"棧空" else e=*(elems+pos-1); pos-; return (*this);STACK& STACK:operator=(const STACK&s) delete elems; *(int*)&elems = new ints.max; *(int*)&max =
41、s.max; for(pos=0;pos<s.pos;pos+) elemspos = s.elemspos; return *this;void STACK:print( ) const for(int i=0;i<pos;i+) cout<<elemsi<<"n"STACK:STACK( ) delete elems; if(elems=0) cout<<"銷(xiāo)毀失敗"<<endl; else cout<<"銷(xiāo)毀成功"<<endl; int main
42、() STACK i(5),j(8); i<<1<<3<<6<<9; int k; i>>k; cout<<k<<"n" i.print(); j=i; j.print(); j<<1<<2<<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ì)列類(lèi)型
43、及其操作函數(shù)采用面向?qū)ο蟮腃+語(yǔ)言定義,請(qǐng)將完成上述操作的所有函數(shù)采用C+編程, 然后寫(xiě)一個(gè)main函數(shù)對(duì)隊(duì)列的所有操作函數(shù)進(jìn)行測(cè)試。class QUEUE int *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);/初始化隊(duì)列:最多m個(gè)元素QUEUE(const QUEUE&s); /用隊(duì)列s拷貝初始化隊(duì)列virtual operator int ( ) const;/返回隊(duì)列的實(shí)際元
44、素個(gè)數(shù)virtual QUEUE& operator<<(int e)volatile; /將e入隊(duì)列,并返回隊(duì)列virtual QUEUE& operator>>(int &e)volatile;/出隊(duì)列到e,并返回隊(duì)列virtual QUEUE& operator=(const QUEUE&s); /賦s給隊(duì)列,并返回被賦值的隊(duì)列virtual void print( ) const;/打印隊(duì)列virtual QUEUE( );/銷(xiāo)毀隊(duì)列;1.2需求分析本題目用數(shù)組實(shí)現(xiàn)隊(duì)列,需要預(yù)知需要空間的大小,會(huì)造成空間浪費(fèi)或不夠用;插入
45、或刪除不需要?jiǎng)討B(tài)分配或刪除內(nèi)存,耗時(shí)很小;支持隨機(jī)存取。2.系統(tǒng)設(shè)計(jì)定義一個(gè)類(lèi),分配一個(gè)數(shù)組空間來(lái)存儲(chǔ)棧內(nèi)元素信息,類(lèi)中分別定義兩個(gè)int元素表示隊(duì)列的頭和尾,入棧的時(shí)候,頭加一;出棧的時(shí)候,尾加一。3.軟件開(kāi)發(fā)在Codeblocks編譯環(huán)境下,使用C+語(yǔ)言編寫(xiě)。4.軟件測(cè)試測(cè)試結(jié)果見(jiàn)圖4.1圖4.15.特點(diǎn)與不足5.1技術(shù)特點(diǎn)通過(guò)創(chuàng)建隊(duì)列類(lèi)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í)候
46、,除以最大元素求余,重新的得到頭結(jié)點(diǎn)。6.2課程設(shè)計(jì)的體會(huì)本次實(shí)驗(yàn)使用面向?qū)ο蟮姆椒▉?lái)編寫(xiě)一個(gè)隊(duì)列,讓我對(duì)隊(duì)列的構(gòu)建以及對(duì)其進(jìn)行一些列的操作有了更進(jìn)一步的了解。與前幾次棧的實(shí)驗(yàn)相比,難度有所增加,但更鍛煉了個(gè)人能力。7.源碼和說(shuō)明7.1文件清單及其功能說(shuō)明experiment4.cpp源碼experiment4.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;cla
47、ss QUEUE int *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);/初始化隊(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ì)列,并返回隊(duì)列virtual QUE
48、UE& operator>>(int &e);/出隊(duì)列到e,并返回隊(duì)列virtual QUEUE& operator=(const QUEUE&s); /賦s給隊(duì)列,并返回被賦值的隊(duì)列virtual void print( ) const;/打印隊(duì)列virtual QUEUE( );/銷(xiāo)毀隊(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
49、),tail(s.tail) for(int i=head;i<tail;i+) elemsi=s.elemsi;QUEUE:operator int () const if(tail>=head) return (tail-head); return (max-head+tail);QUEUE& QUEUE:operator<<(int e) if(tail+1)%max=head) cout<<"隊(duì)列滿n" else elemstail=e; tail+; return (*this);QUEUE& QUEUE:ope
50、rator>>(int &e) if(head=tail) cout<<"隊(duì)列空n" else e=elemshead; head=(head+)%max; return(*this);QUEUE& QUEUE:operator=(const QUEUE&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+) ele
51、msi=s.elemsi; cout<<"賦值成功n" return *this;void QUEUE:print( ) const if(head=tail) cout<<"Emptyn" cout<<"隊(duì)列元素為:" if(head<tail) for(int i=head;i<tail;i+) cout<<elemsi<<"t" else for(int i=head;i<max+1;i+) cout<<elemsi&l
52、t;<"t" for(int i=0;i<tail;i+) cout<<elemsi<<"t" cout<<"n"QUEUE:QUEUE( ) delete elems; *(int*)&elems = 0; *(int*)&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
溫馨提示
- 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ì)自己和他人造成任何形式的傷害或損失。
最新文檔
- 2025年鄉(xiāng)村醫(yī)生考試:農(nóng)村居民健康檔案管理政策宣傳試題集
- 2025年工程測(cè)量員(地質(zhì)工程測(cè)量技師)考試試卷
- 2025年電氣石項(xiàng)目提案報(bào)告
- 2025年門(mén)診醫(yī)療服務(wù)項(xiàng)目規(guī)劃申請(qǐng)報(bào)告
- 2025年明膠空心膠囊項(xiàng)目立項(xiàng)申請(qǐng)報(bào)告
- 2025年走芯車(chē)床項(xiàng)目立項(xiàng)申請(qǐng)報(bào)告
- 2025年電梯安裝改造維修作業(yè)特種作業(yè)操作證考試試卷(電梯機(jī)械知識(shí)應(yīng)用案例分析)
- 詳細(xì)資金流動(dòng)記錄出資證明書(shū)(8篇)
- 教育行業(yè)教育行業(yè)教育行業(yè)教育游戲市場(chǎng)2025年發(fā)展趨勢(shì)與商業(yè)模式研究報(bào)告
- 2025年農(nóng)業(yè)面源污染治理農(nóng)村環(huán)境治理技術(shù)應(yīng)用案例報(bào)告
- 2025年浙江寧波寧??h第一醫(yī)院招考聘用緊缺專(zhuān)業(yè)編外醫(yī)師筆試歷年典型考題解題思路附帶答案詳解
- 湖南2025年湖南江華瑤族自治縣招聘184名事業(yè)單位工作人員筆試歷年參考題庫(kù)附帶答案詳解
- 盤(pán)古java面試題及答案
- 3D打印食品安全標(biāo)準(zhǔn)-洞察及研究
- 2024中儲(chǔ)糧考試題庫(kù)與答案
- 江西省贛州市章貢區(qū)2022-2023學(xué)年五年級(jí)下學(xué)期數(shù)學(xué)素質(zhì)評(píng)價(jià)試卷(含答案)
- 低空經(jīng)濟(jì)八大應(yīng)用場(chǎng)景與實(shí)踐案例解析方案
- 廣東省深圳市福田區(qū)2023-2024學(xué)年一年級(jí)下學(xué)期語(yǔ)文期末試卷(含答案)
- 2025年物業(yè)管理員(中級(jí))職業(yè)技能鑒定試卷(含物業(yè)設(shè)施設(shè)備維護(hù)案例)
- 下肢功能鍛煉的護(hù)理方法
- 核電站清潔維護(hù)派遣及環(huán)境監(jiān)測(cè)服務(wù)合同
評(píng)論
0/150
提交評(píng)論