版權(quán)說(shuō)明:本文檔由用戶提供并上傳,收益歸屬內(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ū)ο蟮募僀語(yǔ)言定義,請(qǐng)將完成上述操作的所有函數(shù)采用純C語(yǔ)言編程, 然后寫(xiě)一個(gè)main函數(shù)對(duì)棧的所有操作函數(shù)進(jìn)行測(cè)試。struct STACK int *elems;/申請(qǐng)內(nèi)存用于存放棧的元素 int
2、max;/棧能存放的最大元素個(gè)數(shù) int pos;/棧實(shí)際已有元素個(gè)數(shù),??諘r(shí)pos=0;void initSTACK(STACK *const p, int m);/初始化p指向的棧:最多m個(gè)元素void initSTACK(STACK *const p, const STACK&s); /用棧s初始化p指向的棧int size (const STACK *const p);/返回p指向的棧的最大元素個(gè)數(shù)maxint howMany (const STACK *const p);/返回p指向的棧的實(shí)際元素個(gè)數(shù)posint getelem (const STACK *const p, int
3、x);/取下標(biāo)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指向的棧2. 需求分析本次實(shí)驗(yàn)要求用C語(yǔ)言的方法實(shí)現(xiàn)對(duì)棧的基本操作,所要求的操作包括
4、初始化棧,用另一個(gè)棧初始化棧,并進(jìn)行出棧入棧操作,還有輸出棧中的元素,用另一個(gè)占合并已存在的棧,摧毀棧等操作。2、 系統(tǒng)設(shè)計(jì)概要設(shè)計(jì)用結(jié)構(gòu)實(shí)現(xiàn)棧,此結(jié)構(gòu)包括指向棧的指針,最大容量,和當(dāng)前的元素個(gè)數(shù)等三個(gè)元素。要求是棧的元素是棧元素類型是整形。主要包括棧的輸入輸出和賦值算法,由于這些算法比較簡(jiǎn)單,所以在這里不用多解釋。在完成本任務(wù)時(shí),用STACK S 的實(shí)現(xiàn)采用了,用定義并且初始化好的數(shù)組復(fù)制給S的第一元素,并且第二第三元素用賦值語(yǔ)句實(shí)現(xiàn)。具體實(shí)現(xiàn)如下:int a5=1,2,3,4,5;STACK s=a,5,5;實(shí)現(xiàn)將e入棧,并返回p用能的時(shí)候,采用了先判斷棧的最大容量夠不夠的問(wèn)題,如果不夠重
5、新分配空間,并且讓e入棧,并且返回新的p的指針。3、 軟件開(kāi)發(fā)所有代碼我用CodeBlocks進(jìn)行編寫(xiě)和調(diào)試。4、 軟件測(cè)試1)總界面如圖1所示:圖12)初始化p指向的棧:最多m個(gè)元素,如圖2所示:圖23)用棧s初始化p指向的棧然后用功能7顯示內(nèi)容 如圖3所示:圖34)將e入棧,并返回p,如圖5所示。先用操作2,用是初始化pset,然后用功能4,輸入一個(gè)元素,并且用功能7,顯示內(nèi)容。運(yùn)行結(jié)果如圖4所示:圖45)出棧到e,并返回p,結(jié)果如圖5所示:圖56)賦s給p指的棧,并返回p,如圖8所示。先讓pset的內(nèi)容和s的內(nèi)容不一樣,然后用功能6,讓s覆蓋pset的內(nèi)容,最后用功能7來(lái)顯示內(nèi)容。結(jié)果如
6、圖6所示:圖67)銷毀p指向的棧,如圖7所示:圖75、 過(guò)程和體會(huì)1. 遇到的主要問(wèn)題和解決方法在申請(qǐng)棧的時(shí)候,不知道怎么分配空間,也忘了分配空間,后來(lái)經(jīng)過(guò)跟同學(xué)們的交流終于順利的完成了任務(wù)。2. 課程設(shè)計(jì)的體會(huì)本次實(shí)驗(yàn)是對(duì)之前學(xué)習(xí)過(guò)的C語(yǔ)言中棧的基本操作的鞏固,利用C語(yǔ)言知識(shí),再加上C+新學(xué)的知識(shí),對(duì)整型棧進(jìn)行一系列的操作。主要來(lái)說(shuō)本次實(shí)驗(yàn)相對(duì)簡(jiǎn)單,對(duì)棧操作有了更進(jìn)一步的了解。6、 源碼和說(shuō)明1. 文件清單及其功能說(shuō)明main.c 是源代碼 fers.exe 是可執(zhí)行文件2. 用戶使用說(shuō)明書(shū)個(gè)人利用CodeBlocks進(jìn)行編譯的,只要能編譯C/C+的編譯器都可以進(jìn)行調(diào)試。3. 源代碼#inc
7、lude#include#includeint sit;void menu(void) printf(t*n); printf(t 1.初始化p指向的棧:最多m個(gè)元素); printf(tt 2.用棧s初始化p指向的棧n); printf(t 3.返回p指向的棧的實(shí)際元素個(gè)數(shù)pos); printf(t 4.將e入棧,并返回pn); printf(t 5.出棧到e,并返回p); printf(ttt 6.賦s給p指的棧,并返回pn); printf(t 7.打印p指向的棧); printf(ttt 8.銷毀p指向的棧n); printf(tttt 0.退出程序n); printf(t*n);t
8、ypedef struct STACK int *elems; /申請(qǐng)內(nèi)存用于存放集合的元素 int max; /集合能存放的最大元素個(gè)數(shù) int pos;/集合實(shí)際已有元素個(gè)數(shù),集合空時(shí)pos=0; STACK;void initSTACK(STACK *const p, int m)p-max=m;sit=m; p-elems=(int*)malloc(m*sizeof(int); p-pos=0;void initSTACK(STACK* pset, const STACK&s) initSTACK(pset,s.max); int i; if(s.elems=NULL) printf(
9、s棧為空,請(qǐng)初始化s!n); else for(i=0;ielemsi=s.elemsi; pset-pos+; int howMany (const STACK *const p) return (p-pos);STACK *const push(STACK *const p, int e) int m; if(p-pos=p-max) printf(棧已經(jīng)為滿n); printf(是否擴(kuò)展棧?1為是,0為否n); scanf(%d,&m); if(m=1) p-elems=(int*)realloc(p,(p-pos+1)*sizeof(int); p-elemsp-pos+1=e; p-
10、pos=p-pos+1; return (p); else printf(插入失敗n); else p-elemsp-pos=e; p-pos=p-pos+1; return (p); STACK *const pop(STACK *const p, int &e) int n; if(p-pos=0) printf(棧為空!); else e=p-elemsp-pos-1; p-pos-; return (p);STACK *const assign(STACK*const p, const STACK&s) p-elems=s.elems; p-max=s.max; p-pos=s.pos
11、; return p;void print(STACK*p) int i; if(p-pos=0) printf(棧為空!n); printf(最大容量為:t%d,p-max); else printf(最大容量為:t%d,p-max); printf(n當(dāng)前的數(shù):n%dn,p-pos); printf(里面的元素為:n); for(i=p-pos-1;i=0;i-) printf(%dt,p-elemsi); void destroySTACK(STACK*const p) free(p-elems); p-max=0; p-pos=0; if(p-max=0) printf(摧毀棧成功!)
12、; else printf(摧毀棧未成功npos=%d!,p-pos);int main()int a5=1,2,3,4,5;STACK *pset=new STACK;STACK s=a,5,5; int op;int e,m=0;int i;char b;int t;int e1;do system(cls); menu(); printf(請(qǐng)輸入序號(hào):); scanf(%d,&op);switch(op) case 1:printf( ); printf(請(qǐng)輸入棧的最大容量m:); scanf(%d,&m); initSTACK(pset,m); getchar();getchar();
13、 break;case 2: initSTACK(pset,s); getchar();getchar(); break; case 3: t=howMany(pset); printf(總共為%d個(gè)元素n,t); getchar();getchar(); break; case 4: if(sit=0) printf(請(qǐng)初始化!n); else printf(請(qǐng)輸入想壓棧的元素e:); scanf(%d,&e); pset=push(pset,e); getchar();getchar();break; case 5: pset=pop(pset,e1); printf(棧頂元素為:t%d,e1); getchar();getchar(); brea
溫馨提示
- 1. 本站所有資源如無(wú)特殊說(shuō)明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請(qǐng)下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請(qǐng)聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁(yè)內(nèi)容里面會(huì)有圖紙預(yù)覽,若沒(méi)有圖紙預(yù)覽就沒(méi)有圖紙。
- 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
- 5. 人人文庫(kù)網(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ì)自己和他人造成任何形式的傷害或損失。
最新文檔
- 二零二五年石油化工產(chǎn)品購(gòu)銷合同6篇
- 二零二五年度汽車(chē)報(bào)廢車(chē)輛運(yùn)輸合同3篇
- 二零二五年度環(huán)保節(jié)能型建筑材料安裝與檢測(cè)合同范本2篇
- 二零二五版海運(yùn)出口運(yùn)輸代理合同貨物跟蹤協(xié)議3篇
- 二零二五版網(wǎng)絡(luò)安全項(xiàng)目反擔(dān)保合同規(guī)定3篇
- 二零二五版二手房買(mǎi)賣(mài)合同貸款流程解析3篇
- 二零二五年數(shù)字電影后期制作聘用合同2篇
- 2025年度國(guó)際承包工程合同安全責(zé)任及防護(hù)措施規(guī)定3篇
- 二零二五版工業(yè)園區(qū)消防安全管理綜合服務(wù)合同3篇
- 二零二五版建筑工地勞務(wù)人員臨時(shí)住宿及伙食合同3篇
- 2025寒假散學(xué)典禮(休業(yè)式)上校長(zhǎng)精彩講話:以董宇輝的創(chuàng)新、羅振宇的堅(jiān)持、馬龍的熱愛(ài)啟迪未來(lái)
- 安徽省示范高中2024-2025學(xué)年高一(上)期末綜合測(cè)試物理試卷(含答案)
- 安徽省合肥市包河區(qū)2023-2024學(xué)年九年級(jí)上學(xué)期期末化學(xué)試題
- 《酸堿罐區(qū)設(shè)計(jì)規(guī)范》編制說(shuō)明
- PMC主管年終總結(jié)報(bào)告
- 售樓部保安管理培訓(xùn)
- 倉(cāng)儲(chǔ)培訓(xùn)課件模板
- 2025屆高考地理一輪復(fù)習(xí)第七講水循環(huán)與洋流自主練含解析
- GB/T 44914-2024和田玉分級(jí)
- 2024年度企業(yè)入駐跨境電商孵化基地合作協(xié)議3篇
- 《形勢(shì)與政策》課程標(biāo)準(zhǔn)
評(píng)論
0/150
提交評(píng)論