資源描述:
《棧的定義及基本操作》由會員上傳分享,免費(fèi)在線閱讀,更多相關(guān)內(nèi)容在行業(yè)資料-天天文庫。
1、附件2:北京理工大學(xué)珠海學(xué)院實(shí)驗(yàn)報告ZHUHAICAMPAUSOFBEIJINGINSTITUTEOFTECHNOLOGY班級學(xué)號姓名指導(dǎo)教師成績實(shí)驗(yàn)題目棧的定義及基本操作實(shí)驗(yàn)時間一、實(shí)驗(yàn)?zāi)康摹⒁饬x(1)理解棧的特點(diǎn),掌握棧的定義和基本操作。(2)掌握進(jìn)棧、出棧、取棧頂操作的實(shí)現(xiàn)方法,熟練掌握順序棧的操作及應(yīng)用。(3)棧的應(yīng)用:數(shù)制轉(zhuǎn)換和中綴表達(dá)式轉(zhuǎn)后綴表達(dá)式二、實(shí)驗(yàn)內(nèi)容及要求說明1:學(xué)生在上機(jī)實(shí)驗(yàn)時,需要自己設(shè)計出所涉及到的函數(shù),同時設(shè)計多組輸入數(shù)據(jù)并編寫主程序分別調(diào)用這些函數(shù),調(diào)試程序并對相應(yīng)的輸出作出分析;修改輸入數(shù)據(jù),預(yù)期輸出并驗(yàn)證輸出
2、的結(jié)果,加深對有關(guān)算法的理解。說明2:用數(shù)制的轉(zhuǎn)換算法調(diào)試順序棧的基本操作算法。編寫主程序調(diào)用數(shù)制的轉(zhuǎn)換conversion算法,再由conversion調(diào)用InitStack、StackEmpty、Push、Pop算法。修改輸入數(shù)據(jù),預(yù)期輸出并驗(yàn)證輸出的結(jié)果,加深對Push和Pop算法的理解。說明3:編寫中綴轉(zhuǎn)后綴表達(dá)式程序。具體要求:(1)定義順序棧,完成棧的基本操作:初始化棧、入棧、出棧、取棧頂元素。(參見教材45頁)(2)實(shí)現(xiàn)十進(jìn)制數(shù)與八進(jìn)制數(shù)的轉(zhuǎn)換。(基本任務(wù),必須完成)(3)實(shí)現(xiàn)中綴表達(dá)式轉(zhuǎn)后綴表達(dá)式。由控制臺輸入中綴表達(dá)式,輸出后
3、綴表達(dá)式。(附加任務(wù),鼓勵完成。)三、實(shí)驗(yàn)所涉及的知識點(diǎn)算法四、實(shí)驗(yàn)記錄15(調(diào)試過程及調(diào)試中遇到的問題及解決辦法,其他算法的存在與實(shí)踐等。)五、實(shí)驗(yàn)結(jié)果及分析(所輸入的數(shù)據(jù)及相應(yīng)的運(yùn)行結(jié)果,運(yùn)行結(jié)果要有提示信息,運(yùn)行結(jié)果采用截圖方式給出。)初始界面進(jìn)棧功能15遍歷功能出棧功能判斷是否為空15數(shù)制轉(zhuǎn)換六、總結(jié)與體會(調(diào)試程序的心得與體會,若實(shí)驗(yàn)課上未完成調(diào)試,要認(rèn)真找出錯誤并分析原因等。)七、程序清單(包含注釋)/***************************************通用頭文件**********************
4、*****************/#defineTRUE1#defineFLASE0#defineOK1#defineERROR0#defineINFREASIBLE-1#defineOVERFLOW-215#defineSIZE100//存儲空間初始分配量#defineINCREMENT10//存儲空間分配增量typedefintStatus;typedefintElemType;/*******************************順序棧頭文件*******************************/#include"Da
5、taStructure.h"#include"stdio.h"#include"stdlib.h"#include"string.h"typedefstruct{ElemType*top;//棧頂指針ElemType*base;//棧底指針intstacksize;//當(dāng)前已分配的存儲空間}SqStack;/*****************************************************基本操作的函數(shù)說明1.初始化InitStack(SqStack&s)2.置空ClearStack(SqStack&s)3.銷毀Dest
6、royStack(SqStack&s)4.是否空StackEmpty(SqStacks)155.棧元素數(shù)StackLength(SqStacks)6.取棧頂元素GetTop(SqStacks,ElemType&e)7.進(jìn)棧Push(SqStack&s,ElemTypee)8.出棧Pop(SqStack&s,ElemType&e)9.遍歷StackTraverse(SqStacks)10.數(shù)值轉(zhuǎn)換Conversion(SqStack*s,ElemTypeN)11.中綴轉(zhuǎn)后綴EvaluateExperssion()*****************
7、************************************//***1.初始化***/StatusInitStack(SqStack*s){//構(gòu)造一個空棧道Ss->base=(ElemType*)malloc(SIZE*sizeof(ElemType));if(!s->base)exit(OVERFLOW);s->top=s->base;s->stacksize=SIZE;returnOK;}/***END1.初始化***//***2.置空***/StatusClearStack(SqStack*s){s->top=s->bas
8、e;15returnOK;}/***END2.置空***//***3.銷毀***/StatusDestroyStack(SqStack*s){Clea