版權(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ì)自己和他人造成任何形式的傷害或損失。
最新文檔
- 2025商品房合同備案授權(quán)委托書
- 野外考察電動(dòng)工具租賃合同
- 餐飲娛樂電視租賃合同
- 拳擊館內(nèi)部裝修施工合同
- 2024年度知識(shí)產(chǎn)權(quán)戰(zhàn)略布局與維權(quán)服務(wù)協(xié)議3篇
- 金融科技項(xiàng)目投標(biāo)模板
- 演播室租賃合同法律意見書
- 花店智能門禁管理辦法
- 國(guó)際展覽公司外債登記辦法
- 醫(yī)學(xué)美容科醫(yī)務(wù)人員勞動(dòng)合同
- 拍賣公司投標(biāo)書范文精簡(jiǎn)處理
- 2023天地偉業(yè)安防產(chǎn)品技術(shù)參數(shù)和檢測(cè)報(bào)告
- 6S檢查表(工廠用)
- “課程思政”融入專業(yè)課教學(xué)的探索課程思政與專業(yè)課結(jié)合
- 【語文】江蘇省蘇州市星海小學(xué)小學(xué)三年級(jí)上冊(cè)期末試題(含答案)
- 炎德英才大聯(lián)考物理高一第一學(xué)期期末檢測(cè)試題含解析
- 設(shè)計(jì)圖紙成品校審記錄單
- 施工總平面布置方案 及施工現(xiàn)場(chǎng)總平面布置圖
- 小數(shù)加減乘除簡(jiǎn)便運(yùn)算100題
- 分布式光伏發(fā)電項(xiàng)目投標(biāo)方案(技術(shù)方案)
- 紫晶存儲(chǔ)招股說明書
評(píng)論
0/150
提交評(píng)論