華中科技大學(xué)計(jì)算機(jī)學(xué)院C實(shí)驗(yàn)報(bào)告實(shí)驗(yàn)五_第1頁
華中科技大學(xué)計(jì)算機(jī)學(xué)院C實(shí)驗(yàn)報(bào)告實(shí)驗(yàn)五_第2頁
華中科技大學(xué)計(jì)算機(jī)學(xué)院C實(shí)驗(yàn)報(bào)告實(shí)驗(yàn)五_第3頁
華中科技大學(xué)計(jì)算機(jī)學(xué)院C實(shí)驗(yàn)報(bào)告實(shí)驗(yàn)五_第4頁
已閱讀5頁,還剩6頁未讀, 繼續(xù)免費(fèi)閱讀

下載本文檔

版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(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ì)實(shí)驗(yàn)名稱: 面向?qū)ο蟮恼完?duì)列編程院系 :計(jì)算機(jī)科學(xué)與技術(shù)專業(yè)班級(jí):CS1209 班學(xué)號(hào) :姓名 :指導(dǎo)教師:李春花2015年01月22日一、需求分析1. 題目要求整型隊(duì)列是一種先進(jìn)后出的存儲(chǔ)結(jié)構(gòu),對(duì)其進(jìn)行的操作通常包括判斷隊(duì)列是否為空、向隊(duì)列頂添加一個(gè)整型元素、出隊(duì)列等。整型隊(duì)列類型及其操作函數(shù)采用面向?qū)ο蟮腃+ 語言定義,請(qǐng)將完成上述操作的所有函數(shù)采用C+ 編程, 然后寫一個(gè) main 函數(shù)對(duì)隊(duì)列的所有操作函數(shù)進(jìn)行測(cè)試。注意,請(qǐng)用實(shí)驗(yàn)三的SATCK 組合形成新的類QUEQUE 。請(qǐng)說明如果刪掉virtual有什么不同。class QUEUESTACK

2、 s1, s2;public:QUEUE(int m);/初始化隊(duì)列:每個(gè)棧最多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 QUEUE& operator>>(int &e);/出隊(duì)列到 e, 并返回隊(duì)列virtual QUEUE& operator=(const QUEUE&s); /賦

3、s 給隊(duì)列 ,并返回被賦值的隊(duì)列virtual void print( ) const;/打印隊(duì)列virtual QUEUE( );/銷毀隊(duì)列;2. 需求分析采用面向?qū)ο蟮?C+語言定義,構(gòu)建整型隊(duì)列并對(duì)其進(jìn)行的操作通常包括判斷隊(duì)列是否為空、向隊(duì)列頂添加一個(gè)整型元素、出隊(duì)列等,再寫一個(gè) main 函數(shù)對(duì)隊(duì)列的所有操作函數(shù)進(jìn)行測(cè)試。二、系統(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,對(duì) S2

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

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

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

7、<<" 請(qǐng)輸入想打印的隊(duì)列1or2n"cin>>e4;if(e4=1)que1.print();elseque2.print();getchar();getchar();break;case 6:cout<<" 請(qǐng)輸入想銷毀的隊(duì)列1or2"int e5;cin>>e5;if(e5=1)que1.QUEUE();elseque2.QUEUE();getchar();getchar();break;default:cout<<" 輸入有誤請(qǐng)重新輸入:"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;/ 申請(qǐng)內(nèi)存用于存放棧的元素constintmax; / 棧能存放的最大元素個(gè)數(shù)intpos;/ 棧實(shí)際已有元素個(gè)數(shù),??諘r(shí)public:STACK(int m);/ 初始化棧:最多m 個(gè)

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

10、pos>=max)cout<<" 隊(duì)列已滿! "else*(elems+pos)=e;pos+;return (*this);virtual STACK& operator>>(int &e)/ 出棧到 e,并返回棧if(pos=0)cout<<" 隊(duì)列為空! "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<<" 當(dāng)前的元素個(gè)數(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);/ 初始化隊(duì)列:每個(gè)棧最多m 個(gè)元素Q

13、UEUE(const QUEUE&s);/ 用隊(duì)列 s 拷貝初始化隊(duì)列virtual operator int ( ) const;/ 返回隊(duì)列的實(shí)際元素個(gè)數(shù)virtual QUEUE& operator<<(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;

14、/ 打印隊(duì)列virtual QUEUE( );/ 銷毀隊(duì)列;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. 返回隊(duì)列的實(shí)際元素個(gè)數(shù)"cout<<"tt 2. 將

溫馨提示

  • 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請(qǐng)下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請(qǐng)聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
  • 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會(huì)有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
  • 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
  • 5. 人人文庫網(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ì)自己和他人造成任何形式的傷害或損失。

評(píng)論

0/150

提交評(píng)論