實(shí)驗(yàn)二棧和隊(duì)列的基本操作實(shí)現(xiàn)及其應(yīng)用夢(mèng)魂_第1頁(yè)
實(shí)驗(yàn)二棧和隊(duì)列的基本操作實(shí)現(xiàn)及其應(yīng)用夢(mèng)魂_第2頁(yè)
實(shí)驗(yàn)二棧和隊(duì)列的基本操作實(shí)現(xiàn)及其應(yīng)用夢(mèng)魂_第3頁(yè)
已閱讀5頁(yè),還剩3頁(yè)未讀, 繼續(xù)免費(fèi)閱讀

下載本文檔

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

文檔簡(jiǎn)介

1、實(shí)驗(yàn)二棧和隊(duì)列的基本操作實(shí)現(xiàn)及其應(yīng)用 1一、實(shí)驗(yàn)?zāi)康?1二、實(shí)驗(yàn)內(nèi)容 2題目一、 試寫(xiě)一個(gè)算法,判斷依次讀入的一個(gè)以 為結(jié)束符的字符序列,是否為回文。所謂 “回文“是指正向讀和反向讀都一樣的一字符串女口 321123 ”或ableelba ” 2三、實(shí)驗(yàn)步驟 3、數(shù)據(jù)結(jié)構(gòu)與核心算法的設(shè)計(jì)描述3、函數(shù)調(diào)用及主函數(shù)設(shè)計(jì)5程序調(diào)試及運(yùn)行結(jié)果分析 5 實(shí)驗(yàn)總結(jié) 6四、主要算法流程圖及程序清單61 、程序清單 6實(shí)驗(yàn) 二 棧和隊(duì)列的基本操作實(shí)現(xiàn)及其應(yīng)用、實(shí)驗(yàn)?zāi)康?、熟練掌握棧和隊(duì)列的基本操作在兩種存儲(chǔ)結(jié)構(gòu)上的實(shí)現(xiàn)。2、會(huì)用棧和隊(duì)列解決簡(jiǎn)單的實(shí)際問(wèn)題。二、實(shí)驗(yàn)內(nèi)容題目一、 試寫(xiě)一個(gè)算法,判斷依次讀入的一個(gè)

2、以 為結(jié)束符的字符 序列,是否為回文。 所謂“回文“是指正向讀和反向讀都一樣的一字符 串,如 321123 ”或a“l(fā)eelba ”相關(guān)常量及結(jié)構(gòu)定義:# define STACK_INIT_SIZE 100# define STACKINCREMENT 10# define OK 1# define ERROR 0typedef int SElemType;/棧類(lèi)型定義typedef struct SqStack SElemType *base;SElemType *top;int stacksize;SqStack;設(shè)計(jì)相關(guān)函數(shù)聲明:判斷函數(shù): int IsReverse()棧:int I

3、nitStack(SqStack &S )int Push(SqStack &S, SElemType e )int Pop(SqStack &S,SElemType &e) int StackEmpty(s)三、實(shí)驗(yàn)步驟、數(shù)據(jù)結(jié)構(gòu)與核心算法的設(shè)計(jì)描述棧的順序儲(chǔ)存 : typedef struct SqStack SElemType *base;/ 棧底指針SElemType *top;/ 棧頂指針 int stacksize;SqStack;棧的初始化:int InitStack(SqStack &s )/構(gòu)造一個(gè)空棧 Ss.base=(SElemTy

4、pe *)malloc(STACK_INIT_SIZE*sizeof(SElemType); if(!s.base) exit(OVERFLOW); / 儲(chǔ)存分配失敗s.top=s.base;s.stacksize=STACK_INIT_SIZE;return OK;進(jìn)棧:int Push(SqStack &s, char e )/ 進(jìn)棧/ 在棧頂插入 eif(s.top-s.base>=s.stacksize)s.base=(SElemType*)realloc(s.base,(s.stacksize+STACKINCREMENT)*sizeof( SElemType);if(

5、!s.base) exit(OVERFLOW); / 儲(chǔ)存分配失敗s.top=s.base+s.stacksize;/s.stacksize+=STACKINCREMENT;*s.top+=e;return OK;出棧:int Pop(SqStack &s,char &e)/ 出棧if(s.top=s.base) return ERROR;e=*-s.top;return OK;判斷棧是否為空:int StackEmpty(SqStack &s)/ 判斷是否為空棧if(s.top=s.base) return ERROR;elsereturn OK;判斷是否為回文:in

6、t IsReverse(SqStack &s)/ 判斷是否是回文int j;char b;for(j=0;j<i;j+)/ 注意循環(huán)到棧底時(shí)Pop(s,b);/ 出棧,將元素賦值與 b;if(b!=aj) return 0;return 1;、函數(shù)調(diào)用及主函數(shù)設(shè)計(jì)主函數(shù):輸入數(shù)據(jù)開(kāi)始進(jìn)棧并且保存在數(shù)組中,再出棧與數(shù)組中的數(shù)據(jù)比 較,從而來(lái)判斷是否為回文。void main()SqStack q;InitStack(q);char m;cout<<" 輸入數(shù)據(jù): "while(cin>>m && m!=''

7、)/ 以 結(jié)束輸入 Push(q,m);ai=m;i+;if (StackEmpty(q)=0)cout<<" 此為空棧! "<<endl;exit(0);int flag;/ 標(biāo)注是否為回文! flag=IsReverse(q);if(flag=0) cout<<a<<" 不是回文 "<<endl; else cout<<a<<" 是回文 "<<endl; 程序調(diào)試及運(yùn)行結(jié)果分析程序運(yùn)行:1.當(dāng)輸入: 123456fggf654321 進(jìn)

8、行判斷。:我的文檔、我的資料'大二下學(xué)期諜程1數(shù)搖結(jié)構(gòu)I數(shù)抿結(jié)構(gòu)實(shí)薑'實(shí)驗(yàn)2 RfiMhui. |123456FF6532ie123456fgfffGS4321£ 回文Press any key to comtinue2.輸入:123456實(shí)驗(yàn)總結(jié)通過(guò)這次實(shí)驗(yàn),我學(xué)會(huì)了棧和隊(duì)列的使用。編程,本來(lái)就是一件不容易的事情,需要我們不斷的鍛煉,不斷的 學(xué)習(xí),熟能生巧,我們只有大量的練習(xí),好好的編程,只有這樣,才 能提高我們的編程能力。經(jīng)過(guò)這次實(shí)驗(yàn),我明白了許多,也了解了許多。我的編程能力不好。 對(duì)于一些簡(jiǎn)單的算法,都不能立刻編出來(lái),我需要很長(zhǎng)時(shí)間的思考, 才能解決這個(gè)問(wèn)題。但

9、我也了解到了自己的長(zhǎng)處,我不會(huì)放棄,我要不斷的學(xué)習(xí),我一 定能夠勤能補(bǔ)拙的,我的編程能力一定會(huì)得到提高的。在以后的學(xué)習(xí)中,我將更加努力。四、主要算法流程圖及程序清單1、程序清單#in elude <iostream.h>#in elude <stdio.h>#in elude <stdlib.h># define STACK_INIT_SIZE 100# define STACKINCREMENT 10# define OK 1# define ERROR 0#define OVERFLOW 0typedef int SElemType;/ 定義 SElem

10、Type 為 int 類(lèi)型 /棧類(lèi)型定義typedef struct SqStack SElemType *base;SElemType *top; int stacksize;SqStack;char aSTACK_INIT_SIZE+STACKINCREMENT; /設(shè)計(jì)相關(guān)函數(shù)聲明:int IsReverse(SqStack &s);/ 判斷是否是回文int InitStack(SqStack &s );/ 棧初始化int Push(SqStack &s, char e );/ 進(jìn)棧int Pop(SqStack &s,char &e);/ 出棧i

11、nt StackEmpty(SqStack &s);/ 判斷是否為空棧int i=0;/ 棧的長(zhǎng)度void main()SqStack q;InitStack(q); char m;cout<<" 輸入數(shù)據(jù): " while(cin>>m && m!='')Push(q,m); ai=m;i+;if (StackEmpty(q)=0)cout<<" 此為空棧! "<<endl; exit(0);int flag; flag=IsReverse(q);if(flag=0

12、) cout<<a<<" 不是回文 "<<endl;else cout<<a<<" 是回文 "<<endl;int InitStack(SqStack &s )/構(gòu)造一個(gè)空棧 Ss.base=(SElemType *)malloc(STACK_INIT_SIZE*sizeof(SElemType); if(!s.base) exit(OVERFLOW); / 儲(chǔ)存分配失敗 s.top=s.base;s.stacksize=STACK_INIT_SIZE;return OK;i

13、nt Push(SqStack &s, char e )/ 進(jìn)棧/ 在棧頂插入 eif(s.top-s.base>=s.stacksize)s.base=(SElemType*)realloc(s.base,(s.stacksize+STACKINCREMENT)*sizeof( SElemType);if(!s.base) exit(OVERFLOW); / 儲(chǔ)存分配失敗 s.top=s.base+s.stacksize;/ s.stacksize+=STACKINCREMENT;*s.top+=e;return OK;int Pop(SqStack &s,char &e)/ 出棧if(s.top=s.base) return ERROR;e=*-s.top; return OK;int StackEmpty(SqStack &s)/ 判斷是否為空棧if(s.top=s.base) return ERROR; elsereturn OK;int IsReverse(SqStack &s) int j; char b; for(j=0;j<i

溫馨提示

  • 1. 本站所有資源如無(wú)特殊說(shuō)明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請(qǐng)下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請(qǐng)聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶(hù)所有。
  • 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ì)用戶(hù)上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對(duì)用戶(hù)上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對(duì)任何下載內(nèi)容負(fù)責(zé)。
  • 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請(qǐng)與我們聯(lián)系,我們立即糾正。
  • 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時(shí)也不承擔(dān)用戶(hù)因使用這些下載資源對(duì)自己和他人造成任何形式的傷害或損失。

最新文檔

評(píng)論

0/150

提交評(píng)論