華中科技大學計算機學院C實驗報告實驗五_第1頁
華中科技大學計算機學院C實驗報告實驗五_第2頁
華中科技大學計算機學院C實驗報告實驗五_第3頁
華中科技大學計算機學院C實驗報告實驗五_第4頁
已閱讀5頁,還剩6頁未讀, 繼續(xù)免費閱讀

下載本文檔

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

文檔簡介

1、課程實驗報告課程名稱: 面向對象程序設計實驗名稱: 面向對象的整型隊列編程院系 :計算機科學與技術專業(yè)班級:CS1209 班學號 :姓名 :指導教師:李春花2015年01月22日一、需求分析1. 題目要求整型隊列是一種先進后出的存儲結構,對其進行的操作通常包括判斷隊列是否為空、向隊列頂添加一個整型元素、出隊列等。整型隊列類型及其操作函數(shù)采用面向對象的C+ 語言定義,請將完成上述操作的所有函數(shù)采用C+ 編程, 然后寫一個 main 函數(shù)對隊列的所有操作函數(shù)進行測試。注意,請用實驗三的SATCK 組合形成新的類QUEQUE 。請說明如果刪掉virtual有什么不同。class QUEUESTACK

2、 s1, s2;public:QUEUE(int m);/初始化隊列:每個棧最多m 個元素QUEUE(const QUEUE&s);/用隊列 s 拷貝初始化隊列virtual operator int ( ) const;/返回隊列的實際元素個數(shù)virtual QUEUE& operator<<(int e);/ 將 e 入隊列 ,并返回隊列virtual QUEUE& operator>>(int &e);/出隊列到 e, 并返回隊列virtual QUEUE& operator=(const QUEUE&s); /賦

3、s 給隊列 ,并返回被賦值的隊列virtual void print( ) const;/打印隊列virtual QUEUE( );/銷毀隊列;2. 需求分析采用面向對象的 C+語言定義,構建整型隊列并對其進行的操作通常包括判斷隊列是否為空、向隊列頂添加一個整型元素、出隊列等,再寫一個 main 函數(shù)對隊列的所有操作函數(shù)進行測試。二、系統(tǒng)設計用兩個棧實現(xiàn)隊列,先判棧 S2 是否為空,如果為空,對 S1 進行入棧操作,如果不是空,棧 S2 數(shù)據(jù)元素倒入到 S1,然后對 S1 進行入棧操作。出隊列時。判斷 S2 是否為空,如果非空S2 中的元素出棧,若果為空,把S1 的元素倒入到 S2,對 S2

4、的元素進行出棧操作。三、軟件開發(fā)使用 CodeBlocks 進行編寫并調(diào)試。四、軟件測試1)總界面如圖 1 所示:圖 12)進行入隊列操作,如圖2 所示:圖 23)打印隊列如圖 3 所示:圖 34)進行出隊列操作,如圖4 所示:圖 45)打印完后隊列中實際元素個數(shù)如圖5 所示:圖 5五、源碼和說明1. 文件清單及其功能說明main.c是源程序文件1.h是頭文件2.h55.exe是頭文件是可執(zhí)行文件2. 用戶使用說明書使用 CodeBlocks 進行編寫和調(diào)試。3. 源代碼main.c:#include"2.h"int main()int m;int op;int x,e,e

5、3,e4;cout<<" 請輸入隊列的最大容量m:n"cin>>m;QUEUE que1(m);QUEUE que2(que1);cout<<" 初始化隊列:最多m 個元素完成n用隊列s 拷貝初始化隊列完成n"Sleep(3000);dosystem("cls");menu();cout<<" 請輸入序號: n"cin>>op;switch(op)case 1:x=que1;cout<<" 實際元素為: "<<x

6、<<"n"getchar();getchar();break;case 2:cout<<" 將 e 入隊列 ,并返回隊列: "cin>>e;que1<<e;getchar();getchar();break;case 3:que1>>e3;cout<<" 出隊列到e,并返回隊列 "<<e3;getchar();getchar();break;case 4:que2 = que1;getchar();getchar();break;case 5:cout

7、<<" 請輸入想打印的隊列1or2n"cin>>e4;if(e4=1)que1.print();elseque2.print();getchar();getchar();break;case 6:cout<<" 請輸入想銷毀的隊列1or2"int e5;cin>>e5;if(e5=1)que1.QUEUE();elseque2.QUEUE();getchar();getchar();break;default:cout<<" 輸入有誤請重新輸入:"break;while(op

8、);cout<<"tt*謝謝使用 !*n"<<endl;return 0;1.h:#include<iostream>#include<stdlib.h>#include<stdio.h>#include <windows.h>using namespace std;class STACKint*constelems;/ 申請內(nèi)存用于存放棧的元素constintmax; / 棧能存放的最大元素個數(shù)intpos;/ 棧實際已有元素個數(shù),??諘rpublic:STACK(int m);/ 初始化棧:最多m 個

9、元素STACK(const STACK&s);/ 用棧 s 拷貝初始化棧virtual int size( ) const/ 返回棧的最大元素個數(shù)maxpos=0;return max;/返回棧的最大元素個數(shù)maxvirtual operator int ( ) const/返回棧的實際元素個數(shù)posreturn pos;/ 返回棧的實際元素個數(shù)posvirtual int operator (int x) const/取下標 x 處的棧元素return elemsx;virtual STACK& operator<<(int e)/ 將 e 入棧 ,并返回棧if(

10、pos>=max)cout<<" 隊列已滿! "else*(elems+pos)=e;pos+;return (*this);virtual STACK& operator>>(int &e)/ 出棧到 e,并返回棧if(pos=0)cout<<" 隊列為空! "elsee=*(elems+pos-1);pos-=1;return (*this);virtual STACK& operator=(const STACK&s) /賦 s 給棧 ,并返回被賦值的棧pos=s.pos;r

11、eturn (*this);virtual void print( ) const/ 打印棧cout<<" 最大量: t"<<max<<endl;cout<<" 當前的元素個數(shù):t"<<pos<<endl;cout<<" 里面的元素為:t"for(int i=pos-1;i>=0;i-)cout<<*(elems+i)<<"t"virtual STACK( )/銷毀棧delete elems;if(el

12、ems=0)cout<<" 銷毀沒成功! "<<endl;else cout<<" 銷毀成功!"<<endl;STACK:STACK(int m=20):max(m),elems(new intm)pos=0;STACK:STACK(const STACK&s):max(s.max),elems(s.elems)pos=0;2.h#include"1.h"class QUEUESTACK s1, s2;public:QUEUE(int m);/ 初始化隊列:每個棧最多m 個元素Q

13、UEUE(const QUEUE&s);/ 用隊列 s 拷貝初始化隊列virtual operator int ( ) const;/ 返回隊列的實際元素個數(shù)virtual QUEUE& operator<<(int e);/ 將 e 入隊列 ,并返回隊列virtual QUEUE& operator>>(int &e);/ 出隊列到e,并返回隊列virtual QUEUE& operator=(const QUEUE&s); / 賦 s 給隊列 ,并返回被賦值的隊列virtual void print( ) const;

14、/ 打印隊列virtual QUEUE( );/ 銷毀隊列;QUEUE:QUEUE(int m):s1(m),s2(m)QUEUE:operator int () constint x=s1;int x2=s2;return (x+x2);QUEUE:QUEUE(const QUEUE&s):s1(s.s1),s2(s.s2)QUEUE&QUEUE:operator <<(int e)int x2=s2;if(x2=0)s1<<e;return (*this);elseint p; while(x2>=1)s2>>p;s1<<

15、;p;x2=s2;s1<<e;return(*this);QUEUE&QUEUE:operator >>(int &e)int x=s1;int x2=s2;if(x2=0)int p; while(x>=1)s1>>p;s2<<p;x=s1;s2>>e;return (*this);elses2>>e;return (*this);QUEUE& QUEUE:operator=(const QUEUE&s)this->s1=s.s1;this->s2=s.s2;return (*this);void QUEUE:print()consts1.print();s2.print();QUEUE:QUEUE()s1.STACK();s2.STACK();void menu(void)cout<<"t*n"cout<<"t 1. 返回隊列的實際元素個數(shù)"cout<<"tt 2. 將

溫馨提示

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

評論

0/150

提交評論