面向?qū)ο蟪绦蛟O(shè)計課程實驗報告_第1頁
面向?qū)ο蟪绦蛟O(shè)計課程實驗報告_第2頁
面向?qū)ο蟪绦蛟O(shè)計課程實驗報告_第3頁
面向?qū)ο蟪绦蛟O(shè)計課程實驗報告_第4頁
面向?qū)ο蟪绦蛟O(shè)計課程實驗報告_第5頁
已閱讀5頁,還剩46頁未讀 繼續(xù)免費閱讀

下載本文檔

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

文檔簡介

課 程 實 驗 報 告課程名稱:面向?qū)ο蟪绦蛟O(shè)計院 系 : 專業(yè)班級 : 學(xué) 號 : 姓 名 : 指導(dǎo)教師 : 目 錄實驗一.面向過程的整型棧編程11.需求分析11.1題目要求11.2需求分析12.系統(tǒng)設(shè)計22.1概要設(shè)計22.2詳細設(shè)計34.軟件測試45.特點與不足45.1技術(shù)特點45.2不足和改進的建議56.過程和體會56.1遇到的主要問題和解決方法56.2課程設(shè)計的體會57.源碼和說明57.1文件清單及其功能說明57.2用戶使用說明書57.3源代碼5實驗二.面向?qū)ο蟮恼蜅>幊?21.需求分析121.1題目要求121.2需求分析122.系統(tǒng)設(shè)計132.1概要設(shè)計132.2詳細設(shè)計133.軟件開發(fā)144.軟件測試145.特點與不足145.1技術(shù)特點145.2不足和改進的建議156.過程和體會156.1遇到的主要問題和解決方法156.2課程設(shè)計的體會157.源碼和說明157.1文件清單及其功能說明157.2用戶使用說明書157.3源代碼15實驗三.基于算符重載的整型棧編程191.需求分析191.1題目要求191.2需求分析192.系統(tǒng)設(shè)計202.1概要設(shè)計202.2詳細設(shè)計203.軟件開發(fā)204.軟件測試205.特點與不足215.1技術(shù)特點215.2不足和改進的建議216.過程和體會216.1遇到的主要問題和解決方法216.2課程設(shè)計的體會217.源碼和說明217.1文件清單及其功能說明217.2用戶使用說明書217.3源代碼21實驗四. 面向?qū)ο蟮恼完犃芯幊?51.需求分析251.1題目要求251.2需求分析252.系統(tǒng)設(shè)計263.軟件開發(fā)264.軟件測試265.特點與不足265.1技術(shù)特點265.2不足和改進的建議266.過程和體會266.1遇到的主要問題和解決方法266.2課程設(shè)計的體會277.源碼和說明277.1文件清單及其功能說明277.2用戶使用說明書277.3源代碼27實驗五. 基于組合的整型隊列編程311.需求分析311.1題目要求311.2需求分析312.系統(tǒng)設(shè)計313.軟件開發(fā)324.軟件測試325.特點與不足325.1技術(shù)特點325.2不足和改進的建議326.過程和體會326.1遇到的主要問題和解決方法326.2課程設(shè)計的體會327.源碼和說明337.1文件清單及其功能說明337.2用戶使用說明書337.3源代碼33實驗六. 基于繼承的整型隊列編程371.需求分析371.1題目要求371.2需求分析382.系統(tǒng)設(shè)計383.軟件開發(fā)384.軟件測試385.特點與不足385.1技術(shù)特點385.2不足和改進的建議386.過程和體會396.1遇到的主要問題和解決方法396.2課程設(shè)計的體會397.源碼和說明397.1文件清單及其功能說明397.2用戶使用說明書397.3源代碼39I實驗一.面向過程的整型棧編程1.需求分析1.1題目要求整型棧是一種先進后出的存儲結(jié)構(gòu),對其進行的操作通常包括判斷棧是否為空、向棧頂添加一個整型元素、出棧等。整型棧類型及其操作函數(shù)采用非面向?qū)ο蟮募僀語言定義,請將完成上述操作的所有函數(shù)采用面向過程的方法編程, 然后寫一個main函數(shù)對棧的所有操作函數(shù)進行測試。struct STACK int *elems;/申請內(nèi)存用于存放棧的元素 int max;/棧能存放的最大元素個數(shù) int pos;/棧實際已有元素個數(shù),??諘rpos=0;void initSTACK(STACK *const p, int m);/初始化p指空棧:可存m個元素void initSTACK(STACK *const p, const STACK&s); /用s初始化p指空棧int size (const STACK *const p);/返回p指的棧的最大元素個數(shù)maxint howMany (const STACK *const p);/返回p指的棧的實際元素個數(shù)posint getelem (const STACK *const p, int x);/取下標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);/賦給p指棧,返回pvoid print(const STACK*const p);/打印p指向的棧元素void destroySTACK(STACK*const p);/銷毀p指向的棧,釋放1.2需求分析本實驗需要實現(xiàn)棧的功能的操作,如元素的進棧,連續(xù)進棧,出棧和連續(xù)出棧,所以需要設(shè)計兩個棧,在完成初始化后直接在程序里給定棧內(nèi)元素。2.系統(tǒng)設(shè)計2.1概要設(shè)計函數(shù)結(jié)構(gòu)圖見圖1.1圖1.1總體流程圖見圖1.2圖1.22.2詳細設(shè)計void initSTACK(STACK *const p, int m)入口參數(shù):int m出口參數(shù):無功能:初始化棧,可存m個元素void initSTACK(STACK *const p, const STACK&s)入口參數(shù):const STACK&s出口參數(shù):無功能:用s初始化p指空棧int size (const STACK *const p) 入口參數(shù):無出口參數(shù):int max功能:返回p指的棧的最大元素個數(shù)maxint howMany (const STACK *const p) 入口參數(shù):無出口參數(shù):int pos功能:返回p指的棧的實際元素個數(shù)posint getelem (const STACK *const p, int x) 入口參數(shù):int x出口參數(shù):elemm功能:取下標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(const STACK*const p) 入口參數(shù):無出口參數(shù):無功能:打印p指向的棧元素void destroySTACK(STACK*const p) 入口參數(shù):出口參數(shù):功能:銷毀p指向的棧,釋放3.軟件開發(fā)在Codeblocks編譯環(huán)境下,使用C+語言編寫。4.軟件測試測試結(jié)果見圖1.3圖1.35.特點與不足5.1技術(shù)特點完成了實驗的所有要求,沒有錯誤的地方。5.2不足和改進的建議沒有做人機交互界面,無法自由選擇入棧的數(shù)據(jù);同時注釋較少,對于程序不了解的人可能需要花費更多時間去了解。6.過程和體會6.1遇到的主要問題和解決方法輸出結(jié)果數(shù)字與預(yù)計不同,檢查后發(fā)現(xiàn)原因是變量初始值未設(shè)置。6.2課程設(shè)計的體會本次實驗主要還是通過回顧C語言中棧的知識完成在C+上的編程,所以總體過程沒有出現(xiàn)太大的問題;同時也對const變量有了進一步的認識。7.源碼和說明7.1文件清單及其功能說明experiment1.cpp源碼experiment1.exe可執(zhí)行文件。7.2用戶使用說明書experiment1.cpp是程序的源碼,可通過修改其中main函數(shù)中的變量來測試各個函數(shù)。7.3源代碼#include#include#includestruct STACK int *elems;/申請內(nèi)存用于存放棧的元素 int max; /棧能存放的最大元素個數(shù) int pos; /棧實際已有元素個數(shù),棧空時pos=0;void initSTACK(STACK *const p, int m);/初始化p指向的棧:最多m個元素void initSTACK(STACK *const p, const STACK&s); /用棧s初始化p指向的棧int size (const STACK *const p);/返回p指向的棧的最大元素個數(shù)maxint howMany (const STACK *const p);/返回p指向的棧的實際元素個數(shù)posint getelem (const STACK *const p, int x);/取下標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);/銷毀p指向的棧int main(int argc, 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 = size(s1); printf(棧的最大元素個數(shù)是 %dn,a); b = howMany(s1); printf(棧的實際元素個數(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;void initSTACK(STACK *const p, int m)/初始化p指向的棧:最多m個元素 p-elems = (int*)malloc(m*sizeof(int*); if(!p-elems) return; p-pos = 0; p-max = m; int i; for(i=0;imax);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;ielemsi=s.elemsi; printf(%dn,p-elemsi); int size (const STACK *const p)/返回p指向的棧的最大元素個數(shù)max return p-max;int howMany (const STACK *const p)/返回p指向的棧的實際元素個數(shù)pos return p-pos;int getelem (const STACK *const p, int x)/取下標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)max) p-elemsp-pos=e; p-pos+; return p; else 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=NULL) 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;ipos);i+) printf(%d ,p-elemsi); printf(n); void destroySTACK(STACK*const p)/銷毀p指向的棧 free(p-elems); free(p); printf(棧已銷毀n);實驗二.面向?qū)ο蟮恼蜅>幊?.需求分析1.1題目要求整型棧是一種先進后出的存儲結(jié)構(gòu),對其進行的操作通常包括判斷棧是否為空、向棧頂添加一個整型元素、出棧等。整型棧類型及其操作函數(shù)采用面向?qū)ο蟮腃+語言定義,請將完成上述操作的所有函數(shù)采用C+編程, 然后寫一個main函數(shù)對棧的所有操作函數(shù)進行測試。class STACK int *const elems;/申請內(nèi)存用于存放棧的元素 const int max;/棧能存放的最大元素個數(shù) int pos;/棧實際已有元素個數(shù),棧空時pos=0;public:STACK(int m);/初始化棧:最多m個元素STACK(const STACK&s); /用棧s拷貝初始化棧int size ( ) const;/返回棧的最大元素個數(shù)maxint howMany ( ) const;/返回棧的實際元素個數(shù)posint getelem (int x) const;/取下標x處的棧元素STACK& push(int e); /將e入棧,并返回棧STACK& pop(int &e); /出棧到e,并返回棧STACK& assign(const STACK&s); /賦s給棧,并返回被賦值的棧void print( ) const;/打印棧STACK( );/銷毀棧;1.2需求分析采用面向?qū)ο蟮腃+語言定義整型棧,對其進行的操作通常包括判斷棧是否為空、向棧頂添加一個整型元素、出棧等。2.系統(tǒng)設(shè)計2.1概要設(shè)計首先需要定義一個類來實現(xiàn)棧,然后依次實現(xiàn)棧的各個功能,在主函數(shù)中給定一個棧然后,然后通過函數(shù)調(diào)用實現(xiàn)棧的功能。2.2詳細設(shè)計STACK(int m) 功能:初始化棧:最多m個元素返回值:無STACK(const STACK&s) 功能:用棧s拷貝初始化棧返回值:無int size ( ) const功能:返回棧的最大元素個數(shù)max返回值:最大元素個數(shù)maxint howMany ( ) const功能:返回棧的實際元素個數(shù)pos返回值:元素數(shù)目posint getelem (int x) const 功能:取下標x處的棧元素返回值:下標為x的元素STACK& push(int e)功能:將e入棧返回值:棧的引用STACK& pop(int &e)功能:出棧到e,并返回棧返回值:棧的引用STACK& assign(const STACK&s) 功能:使用棧s給棧p賦值返回值:棧的引用void print( ) const功能:打印棧返回值:無STACK( ) 功能:銷毀棧返回值:無3.軟件開發(fā)在Codeblocks編譯環(huán)境下,使用C+語言編寫。4.軟件測試測試結(jié)果見圖2.1圖2.15.特點與不足5.1技術(shù)特點完成了初定目標,無其他特點。5.2不足和改進的建議人機交互需要進一步完善。6.過程和體會6.1遇到的主要問題和解決方法由于第一次使用c+面向?qū)ο缶帉懗绦颍_始不明白對象的生成及使用。在和同學(xué)老師的溝通和交流中,慢慢學(xué)會了編程的方法。6.2課程設(shè)計的體會C+語言與C語言有很多相通的地方,所以其中的某些原理和方法可以互相借鑒,這樣就減少了在理解上的難度。7.源碼和說明7.1文件清單及其功能說明experiment2.cpp源碼experiment2.exe可執(zhí)行文件。7.2用戶使用說明書experiment2.cpp是程序的源碼,可通過修改其中main函數(shù)中的變量來測試各個函數(shù)。7.3源代碼#include #include using namespace std;class STACK int *const elems;/申請內(nèi)存用于存放棧的元素 const int max;/棧能存放的最大元素個數(shù) int pos;/棧實際已有元素個數(shù),棧空時pos=0;public:STACK(int m);/初始化棧:最多m個元素STACK(const STACK&s); /用棧s拷貝初始化棧int size ( ) const;/返回棧的最大元素個數(shù)maxint howMany ( ) const;/返回棧的實際元素個數(shù)posint getelem (int x) const;/取下標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):elems(new ints.size(),max(s.size(),pos(s.howMany() for(int i=0;ipos;i+) elemsi=s.getelem(i); cout復(fù)制構(gòu)造成功endl;int STACK:size() const return max;int STACK:howMany() const return pos;int STACK:getelem (int x) const return elemsx;STACK& STACK:push(int e) if(posmax) elemspos=e; pos+; else coutfulln; return *this;STACK& STACK:pop(int &e) if(pos=0) coutempty 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(); pos = s.howMany(); for(i=0;is.howMany();i+) elemsi = s.getelem(i); return *this;void STACK:print( ) const int i; cout棧的元素為:; for(i=0;ipos;i+) coutelemsi ; coutendl;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出棧元素iendl; STACK p(s); cout容量p.size()endl; cout當前元素數(shù)目p.howMany();實驗三.基于算符重載的整型棧編程1.需求分析1.1題目要求整型棧是一種先進后出的存儲結(jié)構(gòu),對其進行的操作通常包括判斷棧是否為空、向棧頂添加一個整型元素、出棧等。整型棧類型及其操作函數(shù)采用面向?qū)ο蟮腃+語言定義,請將完成上述操作的所有函數(shù)采用C+編程, 然后寫一個main函數(shù)對棧的所有操作函數(shù)進行測試。class STACK int *const elems;/申請內(nèi)存用于存放棧的元素 const int max;/棧能存放的最大元素個數(shù) int pos;/棧實際已有元素個數(shù),??諘rpos=0;public:STACK(int m);/初始化棧:最多m個元素STACK(const STACK&s); /用棧s拷貝初始化棧virtual int size ( ) const;/返回棧的最大元素個數(shù)maxvirtual operator int ( ) const;/返回棧的實際元素個數(shù)posvirtual int operator (int x) const;/取下標x處的棧元素virtual STACK& operator(int &e);/出棧到e,并返回棧virtual STACK& operator=(const STACK&s);/賦s給棧,并返回被賦值的棧virtual void print( ) const;/打印棧virtual STACK( );/銷毀棧;1.2需求分析采用面向?qū)ο蟮腃+語言定義,構(gòu)建整型棧并對其進行判斷棧是否為空、向棧頂添加一個整型元素、出棧等操作。2.系統(tǒng)設(shè)計2.1概要設(shè)計首先需要定義一個類來實現(xiàn)棧,然后依次實現(xiàn)棧的各個功能,在主函數(shù)中給定一個棧然后,然后通過函數(shù)調(diào)用實現(xiàn)棧的功能。2.2詳細設(shè)計初始化定義一個類,分配一個數(shù)組空間來存儲棧內(nèi)元素信息,然后初始化為0; 實現(xiàn)入棧則需要將入棧元素e放入棧內(nèi),采用了先判斷棧的最大容量夠不夠的問題,如果不夠重新分配空間,并且讓e入棧,將當前元素pos加一;然后返回棧結(jié)構(gòu)。 實現(xiàn)出棧操作,首先判斷是不是空,若空直接返回,不空則需將棧頂?shù)脑刭x給一個變量然后將當前元素pos減一;返回棧結(jié)構(gòu)。實現(xiàn)棧的賦給即需要將s1棧內(nèi)的元素依次賦給s2棧的,當前元素也需一致并且返回新的棧結(jié)構(gòu)。3.軟件開發(fā)在Codeblocks編譯環(huán)境下,使用C+語言編寫。4.軟件測試測試結(jié)果見圖3.1圖3.15.特點與不足5.1技術(shù)特點使用了符號重載,在一定程度上簡化了函數(shù)。5.2不足和改進的建議在使用符號重載時需要特別注意,防止與其他操作符混淆。6.過程和體會6.1遇到的主要問題和解決方法對于符號重載,剛開始不會調(diào)用函數(shù),之后通過查閱書籍,明白了重載的含義。6.2課程設(shè)計的體會本次實驗以實驗二為基礎(chǔ),通過使用符號重載來更簡單的實現(xiàn)實驗?zāi)康摹?.源碼和說明7.1文件清單及其功能說明experiment3.cpp源碼experiment3.exe可執(zhí)行文件。7.2用戶使用說明書experiment3.cpp是程序的源碼,可通過修改其中main函數(shù)中的變量來測試各個函數(shù)。7.3源代碼#include #include using namespace std;class STACK int *const elems;/申請內(nèi)存用于存放棧的元素 const int max;/棧能存放的最大元素個數(shù) int pos;/棧實際已有元素個數(shù),??諘rpos=0;public:STACK(int m);/初始化棧:最多m個元素STACK(const STACK&s); /用棧s拷貝初始化棧virtual int size ( ) const;/返回棧的最大元素個數(shù)maxvirtual operator int () const;/返回棧的實際元素個數(shù)posvirtual int operator (int x) const;/取下標x處的棧元素virtual STACK& operator(int &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(new ints.max),max(s.max),pos(s.pos) for(int i=0;ipos;i+) elemsi=s.elemsi;int STACK:size ( ) constreturn max;STACK:operator int () constreturn pos;int STACK:operator (int x) constreturn elemsx;STACK& STACK:operatormax) cout(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 = s.max; for(pos=0;poss.pos;pos+) elemspos = s.elemspos; return *this;void STACK:print( ) const for(int i=0;ipos;i+) coutelemsin;STACK:STACK( ) delete elems; if(elems=0) cout銷毀失敗endl; else cout銷毀成功endl; int main() STACK i(5),j(8); i136k; coutkn; i.print(); j=i; j.print(); j1234; coutendl(int)j;實驗四. 面向?qū)ο蟮恼完犃芯幊?.需求分析1.1題目要求整型隊列是一種先進先出的存儲結(jié)構(gòu),對其進行的操作通常包括判斷隊列是否為空、向隊列頂添加一個整型元素、出隊列等。整型隊列類型及其操作函數(shù)采用面向?qū)ο蟮腃+語言定義,請將完成上述操作的所有函數(shù)采用C+編程, 然后寫一個main函數(shù)對隊列的所有操作函數(shù)進行測試。class QUEUE int *const elems;/申請內(nèi)存用于存放隊列的元素 const int max;/隊列能存放的最大元素個數(shù) int head, tail;/隊列頭和尾,隊列空時head=tail;初始時head=tail=0public:QUEUE(int m);/初始化隊列:最多m個元素QUEUE(const QUEUE&s); /用隊列s拷貝初始化隊列virtual operator int ( ) const;/返回隊列的實際元素個數(shù)virtual QUEUE& operator(int &e)volatile;/出隊列到e,并返回隊列virtual QUEUE& operator=(const QUEUE&s); /賦s給隊列,并返回被賦值的隊列virtual void print( ) const;/打印隊列virtual QUEUE( );/銷毀隊列;1.2需求分析本題目用數(shù)組實現(xiàn)隊列,需要預(yù)知需要空間的大小,會造成空間浪費或不夠用;插入或刪除不需要動態(tài)分配或刪除內(nèi)存,耗時很小;支持隨機存取。2.系統(tǒng)設(shè)計定義一個類,分配一個數(shù)組空間來存儲棧內(nèi)元素信息,類中分別定義兩個int元素表示隊列的頭和尾,入棧的時候,頭加一;出棧的時候,尾加一。3.軟件開發(fā)在Codeblocks編譯環(huán)境下,使用C+語言編寫。4.軟件測試測試結(jié)果見圖4.1圖4.15.特點與不足5.1技術(shù)特點通過創(chuàng)建隊列類QUEUE,完成了隊列的構(gòu)造析構(gòu)等諸多功能;同時再次運用重載操作符方便了入隊出隊等操作的完成。5.2不足和改進的建議隊列一旦生成則無法改變。6.過程和體會6.1遇到的主要問題和解決方法如何構(gòu)建一個循環(huán)隊列,解決方法利用求余的方法,當頭結(jié)點大于最大元素的時候,除以最大元素求余,重新的得到頭結(jié)點。6.2課程設(shè)計的體會本次實驗使用面向?qū)ο蟮姆椒▉砭帉懸粋€隊列,讓我對隊列的構(gòu)建以及對其進行一些列的操作有了更進一步的了解。與前幾次棧的實驗相比,難度有所增加,但更鍛煉了個人能力。7.源碼和說明7.1文件清單及其功能說明experiment4.cpp源碼experiment4.exe可執(zhí)行文件。7.2用戶使用說明書experiment4.cpp是程序的源碼,可通過修改其中main函數(shù)中的變量來測試各個函數(shù)。7.3源代碼#include #include using namespace std;class QUEUE int *const elems;/申請內(nèi)存用于存放隊列的元素 const int max;/隊列能存放的最大元素個數(shù) int head, tail;/隊列頭和尾,隊列空時head=tail;初始時head=tail=0public:QUEUE(int m);/初始化隊列:最多m個元素QUEUE(const QUEUE&s); /用隊列s拷貝初始化隊列virtual operator int ( ) const;/返回隊列的實際元素個數(shù)virtual QUEUE& operator(int &e);/出隊列到e,并返回隊列virtual QUEUE& operator=(const QUEUE&s); /賦s給隊列,并返回被賦值的隊列virtual void print( ) const;/打印隊列virtual QUEUE( );/銷毀隊列;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=head) return (tail-head); return (max-head+tail);QUEUE& QUEUE:operator(int e) if(tail+1)%max=head) cout(int &e) if(head=tail) cout隊列空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;itail;i+) elemsi=s.elemsi; cout賦值成功n; return *this;void QUEUE:print( ) const if(head=tail) coutEmptyn; cout隊列元素為:; if(headtail) for(int i=head;itail;i+) coutelemsit; else for(int i=head;imax+1;i+) coutelemsit; for(int i=0;itail;i+) coutelemsit; coutn;QUEUE:QUEUE( ) delete elems; *(int*)&elems = 0; *(int*)&max =0; head = tail =0;int main() QUEUE q(5); q258; cout元素數(shù)目(int)qi; cout出隊元素iendl; q.p

溫馨提示

  • 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
  • 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
  • 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
  • 5. 人人文庫網(wǎng)僅提供信息存儲空間,僅對用戶上傳內(nèi)容的表現(xiàn)方式做保護處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負責(zé)。
  • 6. 下載文件中如有侵權(quán)或不適當內(nèi)容,請與我們聯(lián)系,我們立即糾正。
  • 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔(dān)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。

評論

0/150

提交評論