




版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請(qǐng)進(jìn)行舉報(bào)或認(rèn)領(lǐng)
文檔簡介
PAGEPAGE2附件2:北京理工大學(xué)珠海學(xué)院實(shí)驗(yàn)報(bào)告ZHUHAICAMPAUSOFBEIJINGINSTITUTEOFTECHNOLOGY班級(jí)計(jì)算機(jī)X班學(xué)號(hào)1202010XXXXX姓名XXX指導(dǎo)教師余俊杰成績實(shí)驗(yàn)題目棧的實(shí)現(xiàn)與應(yīng)用實(shí)驗(yàn)時(shí)間2014-3-25一、實(shí)驗(yàn)?zāi)康?、意義(1)理解棧的特點(diǎn),掌握棧的定義和基本操作。(2)掌握進(jìn)棧、出棧、清空棧運(yùn)算的實(shí)現(xiàn)方法。(3)熟練掌握順序棧的操作及應(yīng)用。二、實(shí)驗(yàn)內(nèi)容及要求1.定義順序棧,完成棧的基本操作:建空棧、入棧、出棧、取棧頂元素(參見教材45頁)。調(diào)用棧的基本操作,將十進(jìn)制數(shù)轉(zhuǎn)成十六進(jìn)制數(shù)。提示:余數(shù)入棧全為整數(shù),出棧時(shí)判斷:<=9輸出整數(shù),否則輸出對(duì)應(yīng)的字母。2.調(diào)用棧的基本操作,求出表達(dá)式的值。如,輸入13*(7-2)#,輸出65。提示:如果輸入的字符是數(shù)字,不能馬上入棧,要判斷下一個(gè)字符是否還是數(shù)字。三、實(shí)驗(yàn)所涉及的知識(shí)點(diǎn)數(shù)據(jù)結(jié)構(gòu),C語言結(jié)構(gòu)體,順序棧的建空,出入,取棧四、實(shí)驗(yàn)結(jié)果及分析五、總結(jié)與體會(huì)對(duì)于數(shù)據(jù)結(jié)構(gòu)學(xué)起來還是相當(dāng)吃力的,需要在課后多練習(xí)提高。這次實(shí)驗(yàn)通過多個(gè)函數(shù)出現(xiàn)在同一個(gè)程序中的實(shí)現(xiàn),便于熟悉全局變量和局部變量在程序中六、程序清單(包含注釋)#include<stdio.h>#include<stdlib.h>#include<malloc.h>//定義一個(gè)節(jié)點(diǎn)的結(jié)構(gòu)typedefstructnode{intmember;//數(shù)據(jù)域structnode*pNext;//指針域}Node,*pNode;//定義一個(gè)棧結(jié)構(gòu)typedefstructstack{pNodeTop;//棧頂pNodeBottom;//棧底}Stack,*pStack;voidInitStack(pStack);//初始化棧的函數(shù)boolPush(pStack,int);//進(jìn)行壓棧操作的函數(shù)voidTraverseStack(pStack);//遍歷棧函數(shù)boolEmpty(pStack);//判斷棧是否為空的函數(shù)intPop(pStack);//進(jìn)行出棧操作的函數(shù)voidClear(pStack);//清空棧的函數(shù)intmain(void){Stacks;//定義一個(gè)棧inti;intnum;intdata;//臨時(shí)保存用戶輸入的數(shù)據(jù)intre_num;//保存Pop函數(shù)的返回值InitStack(&s);printf("你想輸入幾個(gè)數(shù)據(jù)啊:");scanf("%d",&num);for(i=0;i<num;i++){printf("第%d個(gè)數(shù):",i+1);scanf("%d",&data);if(Push(&s,data))//調(diào)用Push函數(shù){continue;}else{printf("進(jìn)行進(jìn)棧操作失??!\n");exit(-1);}}TraverseStack(&s);//調(diào)用遍歷函數(shù)printf("你想去掉幾個(gè)數(shù)啊:");scanf("%d",&data);printf("你去掉的數(shù)字是:");for(i=0;i<data;i++){re_num=Pop(&s);//調(diào)用Pop函數(shù),并把返回值賦給re_num;printf("%d",re_num);}printf("看看刪除后還有啥:");TraverseStack(&s);printf("\n");Clear(&s);//調(diào)用清空棧函數(shù)printf("遍歷下看看棧清空沒····\n");TraverseStack(&s);printf("\n");return0;}//進(jìn)行棧的初始化的函數(shù)voidInitStack(pStackps){ps->Top=(pNode)malloc(sizeof(Node));//分配內(nèi)存空間給棧頂if(NULL==ps->Top){printf("動(dòng)態(tài)分配內(nèi)存失敗\n");exit(-1);}else{ps->Bottom=ps->Top;//使棧底也指向棧頂空間ps->Top->pNext=NULL;//棧頂指針置為NULL;}return;}//進(jìn)行進(jìn)棧操作的函數(shù)boolPush(pStackps,intdata){pNodepNew=(pNode)malloc(sizeof(Node));//定義一個(gè)新節(jié)點(diǎn),并分配內(nèi)存空間if(NULL==pNew){returnfalse;}pNew->member=data;//把要進(jìn)棧的數(shù)據(jù)賦給新節(jié)點(diǎn)的member成員pNew->pNext=ps->Top;//使新節(jié)點(diǎn)的指針指向棧頂ps->Top=pNew;//把新節(jié)點(diǎn)作為新棧頂returntrue;}//遍歷棧的函數(shù)voidTraverseStack(pStackps){pNodepNew=ps->Top;while(pNew!=ps->Bottom)//只要棧頂不等于棧底,循環(huán){printf("%d",pNew->member);//打印棧頂?shù)某蓡TmemberpNew=pNew->pNext;//棧頂指針向下移動(dòng)一次}return;}//判斷棧是否為空boolEmpty(pStackps){if(ps->Top==ps->Bottom)//棧頂?shù)扔跅5?,不就是棧中沒數(shù)據(jù)么{returntrue;}else{returnfalse;}}//進(jìn)行出棧操作函數(shù)intPop(pStackps){pNodepSwap=NULL;intreturn_val;if(Empty(ps))//判斷棧是否為空,為空就不能進(jìn)行出棧操作{exit(-1);}else{return_val=ps->Top->member;//把棧頂?shù)某蓡Tmember的值賦給return_val做為函數(shù)返回值pSwap=ps->Top;//使pSwap指向棧頂ps->Top=ps->Top->pNext;//使棧頂指向棧頂下一個(gè)節(jié)點(diǎn)free(pSwap);//釋放以前的棧頂空間returnreturn_val;}}//清空棧的函數(shù)voidClear(pStackps){pNodepNew=NULL;while(ps->Top!=ps->Bottom)//棧頂和棧底不等,循環(huán)
溫馨提示
- 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ì)自己和他人造成任何形式的傷害或損失。
最新文檔
- 節(jié)能環(huán)保行業(yè)綠色能源技術(shù)與項(xiàng)目開發(fā)方案
- 工程設(shè)計(jì)咨詢服務(wù)合同
- 旅客運(yùn)輸服務(wù)合同
- 電子產(chǎn)品維修服務(wù)保障與免責(zé)協(xié)議
- 不動(dòng)產(chǎn)財(cái)產(chǎn)租賃合同
- 項(xiàng)目團(tuán)隊(duì)季度工作總結(jié)報(bào)告
- 22 我們奇妙的世界(教學(xué)設(shè)計(jì))-2023-2024學(xué)年統(tǒng)編版語文三年級(jí)下冊(cè)
- 14《圓明園的毀滅》(教學(xué)設(shè)計(jì))2024-2025學(xué)年統(tǒng)編版語文五年級(jí)上冊(cè)
- 第五章一元函數(shù)的導(dǎo)數(shù)及其應(yīng)用本章小結(jié)第二課時(shí)教學(xué)設(shè)計(jì)-2023-2024學(xué)年高二下學(xué)期數(shù)學(xué)人教A版(2019)選擇性必修第二冊(cè)
- 第6單元 18古詩三首(教學(xué)設(shè)計(jì))2024-2025學(xué)年六年級(jí)語文上冊(cè)同步教學(xué)(統(tǒng)編版)
- 浙江省Z20聯(lián)盟(名校新高考研究聯(lián)盟)2024屆高三下學(xué)期第三次聯(lián)考英語試題 含答案
- 2024-2025學(xué)年初中體育與健康七年級(jí)全一冊(cè)(2024)人教版(2024)教學(xué)設(shè)計(jì)合集
- 第五單元《分?jǐn)?shù)的意義》復(fù)習(xí)試題(單元測(cè)試)-2024-2025學(xué)年五年級(jí)上冊(cè)數(shù)學(xué)北師大版
- 腕踝針中醫(yī)技術(shù)
- DB34T 4620-2023 疼痛科治療室建設(shè)規(guī)范
- 2024年二級(jí)建造師繼續(xù)教育考核題及答案
- (完整版)醫(yī)療廢物處置管理制度
- 物流公司員工守則以及管理制度
- 易制毒化學(xué)品識(shí)別與檢驗(yàn)學(xué)習(xí)通超星期末考試答案章節(jié)答案2024年
- 高中生綜合素質(zhì)評(píng)價(jià)典型事例【六篇】
- 2024人形機(jī)器人產(chǎn)業(yè)半年研究報(bào)告
評(píng)論
0/150
提交評(píng)論