2023年課程實驗報告2_第1頁
2023年課程實驗報告2_第2頁
2023年課程實驗報告2_第3頁
2023年課程實驗報告2_第4頁
2023年課程實驗報告2_第5頁
已閱讀5頁,還剩3頁未讀 繼續(xù)免費(fèi)閱讀

下載本文檔

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

文檔簡介

課程實驗報告專業(yè)年級2023級軟件工程課程名稱數(shù)據(jù)結(jié)構(gòu)C語言描述指導(dǎo)教師申紅婷學(xué)生姓名王曉霞學(xué)號02實驗日期2023.11.7實驗地點(diǎn)A3篤行樓A棟306實驗成績教務(wù)處制2023年10月07日

實驗項目名稱棧和隊列實驗一.目的:1.使學(xué)生對棧和隊列的順序存儲結(jié)構(gòu)和鏈?zhǔn)浇Y(jié)構(gòu)、基本操作和應(yīng)用,能通過實驗達(dá)成掌握和應(yīng)用的目的。實驗?zāi)康募耙?guī)定2.規(guī)定學(xué)生對棧和隊列的順序存儲結(jié)構(gòu)和鏈?zhǔn)浇Y(jié)構(gòu)的基本操作均作驗證性實驗,對棧和列的應(yīng)用各作一個設(shè)計性實驗,并寫出實驗報告。二.規(guī)定:實驗前認(rèn)真預(yù)習(xí)實驗內(nèi)容,實驗時自覺遵守課堂紀(jì)律,嚴(yán)格按操作規(guī)程操作,既要獨(dú)立操作又要與其他同學(xué)配合,在實驗過程中必須按照實驗內(nèi)容認(rèn)真做完實驗,并認(rèn)真填寫相關(guān)實驗報告。實驗內(nèi)容棧和隊列的順序存儲結(jié)構(gòu)和鏈?zhǔn)浇Y(jié)構(gòu)、基本操作和應(yīng)用。1、閱讀下面程序,將函數(shù)Push和函數(shù)Pop補(bǔ)充完整。規(guī)定輸入元素序列12345e,運(yùn)營結(jié)果如下所示?!鯿TD:\ProgramFiles\CodeBlocks\console_runner.exeMWB|1-createStackInitSuccess?inputdata:<Terninatedbyinputingacharacter>12345e2-Pop&Print54321Pressanykeytocontinue.■W1IO實驗環(huán)節(jié)include<stdio.h>include<malloc.h>defineERROR0defineOKIdefineSTACK_INT_SIZE10/*存儲空間初始分派量*defineSTACKINCREMENT5/*存儲空間分派增量*/typedefintElemType;/*定義元素的類型*/typedefstruct{ElemType*base;E1emType*top;intstacksize;/*當(dāng)前已分派的存儲空間文/}SqStack;/intInitStack(SqStack*S);/*構(gòu)造空棧*/intpush(SqStack*S,E1emTypee);/*入棧*/intPop(SqStack*S,ElemType*e);/*出棧*/intCreateStack(SqStack*S);/*創(chuàng)建棧*/voidPrintstack(SqStack*S);/*出棧并輸出棧中元素文/intInitStack(SqStack*S)(S—>base=(E1emType*)mall0c(STACK_INT_SIZE*sizeof(ElemType));if(!S->base)returnERROR;S->top=S->base;S->stacksize=STACK_INT_SIZE;return0K;}/*InitStack*/intPush(SqStack*S,ElemTypee)(if(S->top—S->base>=S->stacksize)(S—>base=(ElemType*)reaHoc(S->base,(S->stacksize+STACKINCREMENT)*sizeof(E1emType));S—>top=S->base+S->stacksize;S->stacksize+=STACKINCREMENT;}*S->top++=e;return1;}/*Push*/intPop(SqStack*S,ElemType*e){if(S->top!=S->base)(*e=*--S->top;return1;)elsereturn0;}/*Pop*/intCreateStack(SqStack*S){inte;if(InitStack(S))printf("InitSuccess!\nn);else{printf(nInitFai1!\nn);returnErrOr;)printf("inputdata:(Terminatedbyinputingacharacter)\n");while(scanfC%dHz&e))Push(S,e);returnOK;}/'C:\Windows\system32\Debug\fgf.exe"1-createStackInitSuccess?inputdata:(Terminatedbyinputingacharacter)589647e2-Pop&Print746985Pressanykeytocontinue.由于當(dāng)main函數(shù)調(diào)用Printstack(&ss)時,程序轉(zhuǎn)到函數(shù)體中,而在該函數(shù)體內(nèi),又調(diào)用了intPop(SqStack*S,E1emType*e),此函數(shù)的功能是棧S的棧頂元素退棧并返回其值。所以輸入元素序列12345,輸出序列為54321o而這則體現(xiàn)了棧是只允許在表的一端進(jìn)行操作的線性表并且具有先進(jìn)后出的特性。2、在第1題的程序中,編寫一個十進(jìn)制轉(zhuǎn)換為二進(jìn)制的數(shù)制轉(zhuǎn)換算法函數(shù)(規(guī)定}/'C:\Windows\system32\Debug\fgf.exe"1-createStack'C:\Windows\system32\Debug\fgf.exe"1-createStackInitSuccess?inputdata:(Terminatedbyinputingacharacter)589647e2-Pop&Print746985Pressanykeytocontinue.由于當(dāng)main函數(shù)調(diào)用Printstack(&ss)時,程序轉(zhuǎn)到函數(shù)體中,而在該函數(shù)體內(nèi),又調(diào)用了intPop(SqStack*S,E1emType*e),此函數(shù)的功能是棧S的棧頂元素退棧并返回其值。所以輸入元素序列12345,輸出序列為54321o而這則體現(xiàn)了棧是只允許在表的一端進(jìn)行操作的線性表并且具有先進(jìn)后出的特性。2、在第1題的程序中,編寫一個十進(jìn)制轉(zhuǎn)換為二進(jìn)制的數(shù)制轉(zhuǎn)換算法函數(shù)(規(guī)定ElemTypee;while(Pop(S,&e))printf(”%3d”,e);}/*Pop_and_Print*/intmain()(SqStackss;printf("\nl-createStack\n");CreateStack(&ss);printf("\n2-Pop&Print\nn);PrintStack(&ss);printf(n\nH);return0;)算法分析:輸入元素序列12345,為什么輸出序列為54321?體現(xiàn)了棧的什么特性?程序運(yùn)營結(jié)果如下圖所示:運(yùn)用棧來實現(xiàn)),并驗證其對的性。.實現(xiàn)代碼voidconveshen(SqStack*S)|ElemTypen,h;intm=0,k=0;InitStack(S);printf(nInpute1ement\n");scanf("%d",&n);while(n){m++;Push(S,n%2);n=n/2;}whi1e(k<m)(k++;Pop(S,&h);printf("gd”,h);))intmain()(SqStackS;conveshen(&S);Printf(H\n0);return0;)驗證?"C:\Windows\system32\Debug\fgd.exe"Inputelenent2511001Pressanykeytocontinue3、閱讀并運(yùn)營程序,并分析程序功能。#include<stdio.h>include<mal1oc.h>include<string.h>defineM20definee1emtypechartypedefstruct{elemtypestack[M];inttop;}stacknode;voidinit(stacknode*st);voidpush(stacknode*stzelemtypex);voidpop(stacknode*st);voidinit(stacknode*st)(st->toP=0;}voidpush(stacknode*st,elemtyPex)|if($t->top==M)printf("thestackisoverf1ow!\nH);else(st->top=st->top+1;st->stack[st->top]=x;})voidpop(stacknode*st)|if(st->top>0)st->top-elseprintf("StackisEmpty!\n");)intmain(){chars[m];inti;stacknode*sp;printf("ereateaemptystack!\nn);sp=malloc(sizeof(stacknode));init(sP);printf("inputaexpression:\n");gets(s);for(i=0;i<strien(s);i++)(if(s[i]=='(')push(sp,s[i]);if(s[i]==(),)

pop(sp);

}if(sp->top==0)printf(',1(rmatch')'!\n'1);elseprintf'notmateh;)*!\n*,);return0;}輸入:2+((c-d)*6-(f-7)*a)/6運(yùn)營結(jié)果:'C:\Windows\system32\Debug\fgd.exe"createaemptystack?inputaexpression:2+<<c-d>*6-<f-7>*a>/6'('match'〉'?Pressanykeytocontinue.輸入:a-((c~d)*6—(s/3-x)/2運(yùn)營結(jié)果:T■]"C:\Windows\system32\Debug\fgd.exe"createaemptystack?inputaexpression:a—<<c-d>*6—<s/3—x>/2'〈'notmatch'〉'?Pressanykeytocontinue.程序的基本功能:判斷所輸入多項式的左右括號是否配對。實險環(huán)境(-)運(yùn)營環(huán)境說明PC計算機(jī),Windows2023(或WindowsXP)及以上版本,C(二)基礎(chǔ)數(shù)據(jù)設(shè)立及說明計算機(jī),Windows2023(或WindowsXP)及以上版本,C均能正常運(yùn)營。

通過這次實驗,我已經(jīng)基本掌握了本章的學(xué)習(xí)要點(diǎn)和實驗的基本規(guī)定以及目的。第一個程序填空題使我學(xué)會了棧和隊列的結(jié)構(gòu)定義,邏輯特性及其基本操作的使用。而第二個程序分析則使我明白了棧和隊列的順序存儲表達(dá)和鏈?zhǔn)酱鎯Ρ磉_(dá),這使得

溫馨提示

  • 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
  • 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
  • 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
  • 5. 人人文庫網(wǎng)僅提供信息存儲空間,僅對用戶上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負(fù)責(zé)。
  • 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請與我們聯(lián)系,我們立即糾正。
  • 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時也不承擔(dān)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。

評論

0/150

提交評論