華中科技大學(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頁
華中科技大學(xué)計(jì)算機(jī)學(xué)院C++實(shí)驗(yàn)報(bào)告 實(shí)驗(yàn)二_第5頁
已閱讀5頁,還剩5頁未讀, 繼續(xù)免費(fèi)閱讀

下載本文檔

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

文檔簡(jiǎn)介

1、面向?qū)ο蟪绦蛟O(shè)計(jì)實(shí)驗(yàn)報(bào)告課 程 實(shí) 驗(yàn) 報(bào) 告課程名稱:面向?qū)ο蟪绦蛟O(shè)計(jì)實(shí)驗(yàn)名稱:面向?qū)ο蟮恼蜅>幊淘?系 : 計(jì)算機(jī)科學(xué)與技術(shù) 專業(yè)班級(jí) : CS1209班 學(xué) 號(hào) : 姓 名 : 指導(dǎo)教師 : 李春花 2014 年 1 月 22 日1、 需求分析1. 題目要求整型棧是一種先進(jìn)后出的存儲(chǔ)結(jié)構(gòu),對(duì)其進(jìn)行的操作通常包括判斷棧是否為空、向棧頂添加一個(gè)整型元素、出棧等。整型棧類型及其操作函數(shù)采用面向?qū)ο蟮腃+語言定義,請(qǐng)將完成上述操作的所有函數(shù)采用C+編程, 然后寫一個(gè)main函數(shù)對(duì)棧的所有操作函數(shù)進(jìn)行測(cè)試。class STACK int *const elems;/申請(qǐng)內(nèi)存用于存放棧的元素 co

2、nst 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 &e); /出棧到e,并返回棧ST

3、ACK& assign(const STACK&s); /賦s給棧,并返回被賦值的棧void print( ) const;/打印棧STACK( );/銷毀棧;2. 需求分析采用面向?qū)ο蟮腃+語言定義整型棧,對(duì)其進(jìn)行的操作通常包括判斷棧是否為空、向棧頂添加一個(gè)整型元素、出棧等。2、 系統(tǒng)設(shè)計(jì)概要設(shè)計(jì)介紹設(shè)計(jì)思路、原理。將一個(gè)復(fù)雜系統(tǒng)按功能進(jìn)行模塊劃分、建立模塊的層次結(jié)構(gòu)及調(diào)用關(guān)系、確定模塊間的接口及人機(jī)界面等。3、 軟件開發(fā)該實(shí)驗(yàn)代碼我用CodeBlocks進(jìn)行編寫并調(diào)試。4、 軟件測(cè)試1) 總體界面如圖1所示:圖12) 進(jìn)行入棧操作,如圖2所示:圖23) 進(jìn)行打印棧操作,如圖

4、3所示:圖34) 進(jìn)行出棧操作,如圖4所示:圖45) 用下標(biāo)去元素,如圖5所示:圖56)棧中實(shí)際元素的個(gè)數(shù)如圖6所示:圖65、 源碼和說明1. 文件清單及其功能說明main.c 是源程序2.exe 是可執(zhí)行文件2. 用戶使用說明書使用CodeBlocks進(jìn)行編譯,或者直接打開可執(zhí)行文件。3. 源代碼#include<iostream>#include<stdlib.h>#include<stdio.h>#include <windows.h>using namespace std;class STACK int * elems;/申請(qǐng)內(nèi)存用于存放

5、棧的元素 int max;/棧能存放的最大元素個(gè)數(shù) int pos;/棧實(shí)際已有元素個(gè)數(shù),棧空時(shí)pos=0; public: STACK(int m);/初始化棧:最多m個(gè)元素 STACK(const STACK&s); /用棧s拷貝初始化棧 int size() const;/返回棧的最大元素個(gè)數(shù)max int howMany() const;/返回棧的實(shí)際元素個(gè)數(shù)pos int getelem (int x) const;/取下標(biāo)x處的棧元素 STACK& push(int e); /將e入棧,并返回棧 STACK& pop(int &e); /出棧到e,并

6、返回棧 STACK& assign(const STACK&s); /賦s給棧,并返回被賦值的棧 void print()const;/打印棧 STACK();/銷毀棧;STACK:STACK(int m):max(m),elems(new intm) pos=0;STACK:STACK(const STACK&s):max(s.max),elems(s.elems) pos=0; int STACK:size() const return max; int STACK:getelem (int x) const if(pos=0) cout<<"

7、棧為空!n" else if(x>pos) cout<<"當(dāng)前的元素不存在:n" else return elemsx; int STACK:howMany ( ) const return pos; STACK& STACK: push(int e) if(pos>=max) cout<<"空間不夠!n" else *(elems+pos)=e; pos+; cout<<*(elems+pos-1); return (*this); STACK&STACK: pop(int &a

8、mp;e) if(pos=0) cout<<"棧為空!" else e=*(elems+pos-1); pos-=1; return(*this); STACK& STACK:assign(const STACK&s) pos=s.pos; return (*this); void STACK:print()const cout<<"最大量:"<<max<<endl; cout<<"當(dāng)前的元素個(gè)數(shù):"<<pos<<endl; cout&

9、lt;<"里面的元素為:" for(int i=pos-1;i>=0;i-) cout<<*(elems+i)<<"t" STACK:STACK() delete elems; pos=0; max=0; void menu(void) cout<<"t*n" cout<<"t 1.返回棧的最大元素個(gè)數(shù)max" cout<<"tt 2.返回棧的實(shí)際元素個(gè)數(shù)posn" cout<<"t 3.取下標(biāo)x處的棧

10、元素" cout<<"ttt 4.將e入棧,并返回棧n" cout<<"t 5.出棧到e,并返回棧" cout<<"ttt 6.賦s給棧,并返回被賦值的棧n" cout<<"t 7.打印棧" cout<<"tttt 8.銷毀棧n" cout<<"ttt 0.退出程序n" cout<<"t*n"int main() int m; int x1; int op; in

11、t t,x,x2,e,e3,e4; cout<<"請(qǐng)輸入棧的最大容量m:n" cin>>m; STACK st1(m); STACK st2(st1); cout<<"初始化棧:最多"<<m<<"個(gè)元素完成n用棧s拷貝初始化棧完成n" Sleep(3000); dosystem("cls");menu();cout<<"請(qǐng)輸入序號(hào):n" cin>>op;switch(op) case 1: t=st1.size(

12、); cout<<"當(dāng)前棧的大小為: "<<t; getchar();getchar(); break; case 2: x=st1.howMany(); cout<<"實(shí)際元素為 :"<<x<<"n" getchar();getchar();break; case 3: cout<<"請(qǐng)輸入想得到的元素的下標(biāo):"<<"n" cin>>x1; x2=st1.getelem(x1); cout<&

13、lt;"下表為"<<x1<<"的元素:"<<x2; getchar();getchar(); break; case 4: cout<<"請(qǐng)輸入想壓棧的元素:" cin>>e; st1=st1.push(e); getchar();getchar(); break; case 5: st1=st1.pop(e3); cout<<"出棧元素為"<<e3; getchar();getchar(); break; case 6: st2=st2.assign(st1); getchar();getchar(); break; case 7: cout<<"請(qǐng)輸入想打印的棧1or2n" cin>>e4; if(e4=1) st1.print(); else st2.print(); getchar();getchar(); break; case 8: cout<<"請(qǐng)輸入想銷毀的棧1or2&quo

溫馨提示

  • 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)論