實驗二堆棧實驗報告_第1頁
實驗二堆棧實驗報告_第2頁
實驗二堆棧實驗報告_第3頁
實驗二堆棧實驗報告_第4頁
實驗二堆棧實驗報告_第5頁
已閱讀5頁,還剩31頁未讀 繼續(xù)免費(fèi)閱讀

下載本文檔

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

文檔簡介

計算機(jī)科學(xué)與技術(shù)系實驗報告專業(yè)名稱計算機(jī)科學(xué)與技術(shù)課程名稱數(shù)據(jù)結(jié)構(gòu)與算法項目名稱試驗二堆棧試驗班級1學(xué)號姓名同組人員無試驗日期試驗二堆棧試驗試驗題目1:將十進(jìn)制正整數(shù)轉(zhuǎn)換成十六進(jìn)制算法1.問題分析本程序要求實現(xiàn)將十進(jìn)制正整數(shù)轉(zhuǎn)換成十六進(jìn)制算法。完成該試驗需要以下3個子任務(wù):eq\o\ac(○,1)首先定義一個次序棧SeqStack類型,再寫出?;舅惴ê瘮?shù)。eq\o\ac(○,2)用dectohex()函數(shù)實現(xiàn)將十進(jìn)制化為16進(jìn)制數(shù)入棧;eq\o\ac(○,3)在主函數(shù)完成數(shù)據(jù)輸出和出棧。測試數(shù)據(jù)設(shè)計以下:2448991001012.概要設(shè)計為了實現(xiàn)上述程序功效,需要:eq\o\ac(○,1)定義一個次序棧SeqStack類型eq\o\ac(○,2)定義?;舅惴╡q\o\ac(○,3)調(diào)用函數(shù)dectohex把十進(jìn)制轉(zhuǎn)換為16進(jìn)制存入s中eq\o\ac(○,4)在主函數(shù)中完成16進(jìn)制輸出本程序包含7個函數(shù):1.主函數(shù)main()2.置空棧InitStack()3.判??誗tackEmpty()4.取棧頂函數(shù)GetTop()5.入棧Push()6.出棧Pop()7.dectohex()各函數(shù)關(guān)系以下: InitStack、 StackEmptymain GetTop Push Pop dectohex詳細(xì)設(shè)計實現(xiàn)概要設(shè)計中定義全部數(shù)據(jù)類型,對每個操作給出了算法和代碼,主程序和模塊都需要代碼。(1)次序棧#definemaxlen100typedefstruct{ intdata[maxlen]; inttop;}SeqStack;(2)?;舅惴⊿eqStack*InitStack(SeqStack*s){//建立一個空棧 s->top=-1; returns;}intStackEmpty(SeqStack*s){//判斷棧是否為空 if(s->top>=0)return0; elsereturn1;}intGetTop(SeqStack*s){//取棧頂元素 if(s->top<=maxlen-1&&s->top>=0)return(s->data[s->top]); elseprintf("effor");}voidPush(SeqStack*s,intx){//入棧 if(s->top<maxlen-1&&s->top>=-1){ s->top++;s->data[s->top]=x; }elseprintf("effor");}voidPop(SeqStack*s){//出棧 if(s->top>=0)s->top--; elseprintf("effor");}(3)用dectohex()函數(shù)實現(xiàn)將十進(jìn)制化為16進(jìn)制數(shù)入棧voiddectohex(longnum){//將十進(jìn)制轉(zhuǎn)換成十六進(jìn)制 InitStack(&s); while(num){ intk=num%16; Push(&s,k); num=num/16; }(4)在主函數(shù)完成數(shù)據(jù)十六進(jìn)制輸出和出棧。intmain(){ longnum; scanf("%ld",&num); dectohex(num); while(!StackEmpty(&s)){//以十六進(jìn)制輸出 intx=GetTop(&s); if(x<10){ printf("%d",x); } else{ switch(x){ case10:printf("A");break; case11:printf("B");break; case12:printf("C");break; case13:printf("D");break; case14:printf("E");break; case15:printf("F");break; } } Pop(&s); } printf("\n"); return0;}4、調(diào)試分析編譯時在主函數(shù)定義了SeqStacks,在dectohex()里也有這個語句,十進(jìn)制轉(zhuǎn)十六進(jìn)制時是儲存在形參棧里面,執(zhí)行之后,并沒有傳遞給實參,造成輸出為空。處理方法把s定義為全局變量,或者在dectohex()函數(shù)多申明個形參。本程序使用是把s定義為全局變量。5、用戶使用說明程序名為class1.exe,在DEBUG文件夾里面。運(yùn)行環(huán)境Visualc++6.0。6、測試結(jié)果7、附錄#include<stdio.h>#definemaxlen100typedefstruct{//次序棧定義 intdata[maxlen]; inttop;}SeqStack;SeqStacks;SeqStack*InitStack(SeqStack*s){//建立一個空棧 s->top=-1; returns;}intStackEmpty(SeqStack*s){//判斷棧是否為空 if(s->top>=0)return0; elsereturn1;}intGetTop(SeqStack*s){//取棧頂元素 if(s->top<=maxlen-1&&s->top>=0)return(s->data[s->top]); elseprintf("effor");}voidPush(SeqStack*s,intx){//入棧 if(s->top<maxlen-1&&s->top>=-1){ s->top++;s->data[s->top]=x; }elseprintf("effor");}voidPop(SeqStack*s){//出棧 if(s->top>=0)s->top--; elseprintf("effor");}voiddectohex(longnum){//將十進(jìn)制轉(zhuǎn)換成十六進(jìn)制 InitStack(&s); while(num){ intk=num%16; Push(&s,k); num=num/16; }}intmain(){ longnum; scanf("%ld",&num); dectohex(num); while(!StackEmpty(&s)){//以十六進(jìn)制輸出 intx=GetTop(&s); if(x<10){ printf("%d",x); } else{ switch(x){ case10:printf("A");break; case11:printf("B");break; case12:printf("C");break; case13:printf("D");break; case14:printf("E");break; case15:printf("F");break; } } Pop(&s); } printf("\n"); return0;}試驗題目2:用棧判斷所給字符串是否具備中心對稱關(guān)系,要求盡可能少時間完成判斷。1.問題分析本程序要求實現(xiàn)用棧判斷字符串是否為回文字符串算法。完成該試驗需要以下3個子任務(wù):eq\o\ac(○,1)首先定義一個次序棧SeqStack類型,再寫出?;舅惴ê瘮?shù)。eq\o\ac(○,2)用compare()函數(shù)實現(xiàn)判斷字符串是否具備中心對稱關(guān)系;eq\o\ac(○,3)在主函數(shù)輸出判斷結(jié)果。測試數(shù)據(jù)設(shè)計以下:xyzyxabcddcba2.概要設(shè)計為了實現(xiàn)上述程序功效,需要:eq\o\ac(○,1)定義一個次序棧SeqStack類型eq\o\ac(○,2)定義?;舅惴╡q\o\ac(○,3)調(diào)用函數(shù)compare()函數(shù)判斷字符串是否具備中心對稱關(guān)系eq\o\ac(○,4)在主函數(shù)中輸出判斷結(jié)果本程序包含8個函數(shù):1.主函數(shù)main()2.置空棧InitStack()3.判??誗tackEmpty()4.判棧滿StackFull()5.取棧頂函數(shù)GetTop()6.入棧Push()7.出棧Pop()8.compare()各函數(shù)關(guān)系以下: InitStack、 StackEmptymain GetTop Push Pop StackFull compare詳細(xì)設(shè)計實現(xiàn)概要設(shè)計中定義全部數(shù)據(jù)類型,對每個操作給出了算法和代碼,主程序和模塊都需要代碼。(1)次序棧#definemaxlen100typedefstruct{ intdata[maxlen]; inttop;}SeqStack;(2)棧基本算法SeqStack*InitStack(SeqStack*s){//建立一個空棧 s->top=-1; returns;}intStackEmpty(SeqStack*s){//判斷棧是否為空 if(s->top>=0)return0; elsereturn1;}intStackFull(SeqStacks){//判斷棧是否為滿 if(s.top==maxlen-1) return1; else return0;}intGetTop(SeqStack*s){//取棧頂元素 if(s->top<=maxlen-1&&s->top>=0)return(s->data[s->top]); elseprintf("effor");}voidPush(SeqStack*s,intx){//入棧 if(s->top<maxlen-1&&s->top>=-1){ s->top++;s->data[s->top]=x; }elseprintf("effor");}voidPop(SeqStack*s){//出棧 if(s->top>=0)s->top--; elseprintf("effor");}(3)用compare()函數(shù)判斷字符串是否有中心對稱關(guān)系intcompare(chars1[]){ SeqStacks; inti,len; InitStack(&s); len=strlen(s1); for(i=0;i<len/2;i++){ Push(&s,s1[i]); } for(i=(len+1)/2;i<len;i++){ if(s1[i]!=GetTop(&s)) return0; else Pop(&s); } return1;}(4)在主函數(shù)完成判斷結(jié)果輸出voidmain(){ chars1[20]; printf("請輸入一個回文串:\n"); gets(s1); printf("判斷結(jié)果:\n"); if(compare(s1)) printf("此為回文串\n"); else printf("不是回文串\n");}4、調(diào)試分析編譯無錯誤5、用戶使用說明程序名為class3.exe,在DEBUG文件夾里面。運(yùn)行環(huán)境Visualc++6.0。6、測試結(jié)果7、附錄#include<stdio.h>#include<string.h>#definemaxlen20typedefstruct{ //次序棧定義 chardata[maxlen]; inttop;}SeqStack;voidInitStack(SeqStack*s){ //建立一個空棧 s->top=-1;}intStackFull(SeqStacks){ //判斷棧是否為滿 if(s.top==maxlen-1) return1; else return0;}intStackEmpty(SeqStack*s){ //判斷棧是否為空 if(s->top>=0) return0; else return1;}voidPush(SeqStack*s,charx){ //入棧 if(StackFull(*s)) printf("error"); else { s->top++;s->data[s->top]=x;}}voidPop(SeqStack*s){ //出棧 if(StackEmpty(s)) printf("error"); else s->top--;}charGetTop(SeqStack*s){ //取棧頂元素 if(StackEmpty(s)){ printf("error"); return0; } else return(s->data[s->top]);}intcompare(chars1[]){ //判斷字符串是否具備中心對稱關(guān)系 SeqStacks; inti,len; InitStack(&s); len=strlen(s1); for(i=0;i<len/2;i++){ Push(&s,s1[i]); } for(i=(len+1)/2;i<len;i++){ if(s1[i]!=GetTop(&s)) return0; else Pop(&s); } return1;}voidmain(){ chars1[20]; printf("請輸入一個回文串:\n"); gets(s1); printf("判斷結(jié)果:\n");//輸出判斷結(jié)果 if(compare(s1)) printf("此為回文串\n"); else printf("不是回文串\n");}試驗題目3:設(shè)計算法把一個十進(jìn)制數(shù)整數(shù)轉(zhuǎn)換為二至九進(jìn)制之間任一進(jìn)制數(shù)輸出1.問題分析本程序要求實現(xiàn)十進(jìn)制數(shù)整數(shù)轉(zhuǎn)換為二至九進(jìn)制。完成該試驗需要以下3個子任務(wù):eq\o\ac(○,1)首先定義一個次序棧SeqStack類型,再寫出?;舅惴ê瘮?shù)。eq\o\ac(○,2)用dectohex()函數(shù)實現(xiàn)將十進(jìn)制化為n進(jìn)制數(shù)入棧;eq\o\ac(○,3)在主函數(shù)完成數(shù)據(jù)輸出和出棧。測試數(shù)據(jù)設(shè)計以下:8945562.概要設(shè)計1)為了實現(xiàn)上述程序功效,需要:eq\o\ac(○,1)定義一個次序棧SeqStack類型eq\o\ac(○,2)定義?;舅惴╡q\o\ac(○,3)調(diào)用函數(shù)dectohex把十進(jìn)制轉(zhuǎn)換為n進(jìn)制存入s中eq\o\ac(○,4)在主函數(shù)中完成n進(jìn)制輸出2)本程序包含7個函數(shù):1.主函數(shù)main()2.置空棧InitStack()3.判??誗tackEmpty()4.取棧頂函數(shù)GetTop()5.入棧Push()6.出棧Pop()7.dectohex()各函數(shù)關(guān)系以下: InitStack、 StackEmptymain GetTop Push Pop dectohex詳細(xì)設(shè)計實現(xiàn)概要設(shè)計中定義全部數(shù)據(jù)類型,對每個操作給出了算法和代碼,主程序和模塊都需要代碼。(1)次序棧#definemaxlen100typedefstruct{ intdata[maxlen]; inttop;}SeqStack;(2)?;舅惴⊿eqStack*InitStack(SeqStack*s){//建立一個空棧 s->top=-1; returns;}intStackEmpty(SeqStack*s){//判斷棧是否為空 if(s->top>=0)return0; elsereturn1;}intGetTop(SeqStack*s){//取棧頂元素 if(s->top<=maxlen-1&&s->top>=0)return(s->data[s->top]); elseprintf("effor");}voidPush(SeqStack*s,intx){//入棧 if(s->top<maxlen-1&&s->top>=-1){ s->top++;s->data[s->top]=x; }elseprintf("effor");}voidPop(SeqStack*s){//出棧 if(s->top>=0)s->top--; elseprintf("effor");}(3)用dectohex()函數(shù)實現(xiàn)將十進(jìn)制化為16進(jìn)制數(shù)入棧voiddectohex(longnum,intn){//將十進(jìn)制轉(zhuǎn)換成n進(jìn)制 InitStack(&s); while(num){ intk=num%n; Push(&s,k); num=num/n; }(4)在主函數(shù)完成數(shù)據(jù)n進(jìn)制輸出和出棧。intmain(){ longnum; intn;printf("請輸入需要一個十進(jìn)制整數(shù):\n"); scanf("%ld",&num); printf("請輸入需要轉(zhuǎn)換成幾進(jìn)制數(shù):\n"); scanf("%d",&n); dectohex(num,n); printf("結(jié)果為:"); while(!StackEmpty(&s)){//以n進(jìn)制輸出 printf("%d",GetTop(&s)); Pop(&s); } printf("\n"); return0;}4、調(diào)試分析編譯成功。5、用戶使用說明程序名為class2.exe,在DEBUG文件夾里面。運(yùn)行環(huán)境Visualc++6.0。6、測試結(jié)果7.附錄#include<stdio.h>#definemaxlen100typedefstruct{//次序棧定義 intdata[maxlen]; inttop;}SeqStack;SeqStacks;SeqStack*InitStack(SeqStack*s){

溫馨提示

  • 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

提交評論