實驗一一個順序棧的大體運算實驗_第1頁
實驗一一個順序棧的大體運算實驗_第2頁
實驗一一個順序棧的大體運算實驗_第3頁
實驗一一個順序棧的大體運算實驗_第4頁
實驗一一個順序棧的大體運算實驗_第5頁
已閱讀5頁,還剩4頁未讀, 繼續免費閱讀

下載本文檔

版權說明:本文檔由用戶提供并上傳,收益歸屬內容提供方,若內容存在侵權,請進行舉報或認領

文檔簡介

1、實驗一個順序棧的大體運算實驗一、實驗目的:對一個順序棧的大體運算進行分析與設計,回憶數據結構所學過的知識,把握一個 順序棧的大體運算實現,為下一步的實驗奠定基礎。二、實驗要求:要求對一個順序棧的大體運算作設計性實驗,并上機運行,撰寫實驗報告。三、實驗內容:一個順序棧的數據類型表示和初始化、進棧、出棧大體運算。四、實驗環境:Windows XP + VC+6. 0 開發環境。五、實驗步驟:1、對順序棧的知識進行溫習,弄清楚棧的算法思想。2、熟悉順序棧的幾種大體運算,即:(1)初始化棧int initStack(sqstack *s)/*創建一個空棧由指針S指出*/if (s=(sqstack*)

2、malloc(sizeof(sqstack)=NULL) return FALSE; s->top= -1;return TRUE;)(2)入棧操作int push(sqstack *s, Elemtype x)/*將元素X插入到棧s中,作為s的新棧頂*/ if(s->top>=MAXNUM-l) return FALSE; /*棧滿*/ s->top+;s->stacks->top=x;return TRUE;)(3)出棧操作Elemtype pop(sqstack *s)/*假設棧s不為空,那么刪除棧頂元素*/Elemtype x;if(s->to

3、p<0) return NULL; /*???/x=s->stacks->top.;s->top-;return x;)(4)取棧頂元素操作Elemtype gettop(sqstack *s)/*假設棧s不為空,那么返回棧頂元素*/if (s->top<0) return NULL; /*棧空*/return (s->stacks->top);)取棧頂元素與出棧不同的地方在于出棧操作改變棧頂指針top的位置,而取棧頂元素操 作不改變棧的棧頂指針.(5)判??詹僮鱥nt Empty(sqstack *s)/*棧s為空時,返回為TRUE;非空時,返

4、回為FALSE*/if(s->top<0) return TRUE;return FALSE;(6)置空操作void setEmpty(sqstack *s)/*將棧s的棧頂指針top,置為T*/s->top= -1;)3、上機調試。源代碼如下:#include<stdio. h>#include<stdl ib.h>#define MAXNUM 30#define Elemtype int/*概念順序棧的存儲結構*/typedef structElemtype stackMAXNUM:int top;SqStack;/*初始化順序棧*/void In

5、itStack (SqStack *p) if (!p) pr intf ("error'1);p->top=-1;)/*入棧*/void Push (SqStack *p, Elemtype x) if(p->top<MAXNUM-1) p->stack+p->top=x;else printf("Overflow!nH);)/*出棧*/Elemtype Pop(SqStack *p) Elemtype x;if (p->top!=0)x=p->stackp->top;pr intf ("棧頂元素%d 已經

6、被刪除!n", p->stackp->top);p->top-;return (x);)elsepr i ntf ("Underflow!、);return (0);)/*獲取棧頂元素*/Elemtype GetTop (SqStack *p) if(p->top!=0) return (p->stackp->top);else printf ("Underflow!nH);return (0) ; )/*遍歷順序棧*/void OutStack (SqStack *p) int i:printf (Hn");i f

7、(p->top<0) pr intf ("這是一個空棧! n");for (i=p->top; i>=0; i)pr intf ("第d 個數據是:%6dn". i, p->stacki);/*置空順序棧*/ void setEmpty(SqStack *p) p->top=-1;/*主函數*/ma i n () SqStack *q;int y. cord;Elemtype a;do printf ("n第一次利用必需初始化! n");pr intf (MnM);pr intf (Mn* 主菜單*

8、 卜n”);pr intf ("n*1初始化順序棧* 、n");pr intf ("n*2插入一個元素* Ji");pr intf ("n*3刪除棧頂元素* (n");pr intf ("n*4取棧頂元素* 、n");pr intf (Mn*5置空順序棧* n);pr intf ("npr intf ( n-*6終止程序運行* 、n");AnM);printf (”請輸入您的選擇(1, 2, 3, 4, 5, 6): “); scanf ("%d' &cord);pr

9、intf ("n");sw i tch (cord) case 1: q= (SqStack*)ma I Ioc(s i zeof(SqStack): InitStack(q);OutStack(q): break;case 2: pr intf (”請輸入要插入的數據元素:a二”);scanf (飛d",&a);Push(q. a);OutStack (q); break;case 3: Pop(q);OutStack (q): break;case 4: y=GetTop(q);printf ("n 棧頂元素為:%dn". y);O

10、utStack (q); break;case 5: setEmpty(q);pr intf ("n順序棧被置空! n");OutStack (q); break;case 6: ex i t (0);) v/h i I e (cord<=6);六、實驗測試結果及分析:U、:Proeram FilesWicrosoTt Visual StudioWyProjec-.當第一場運行時需要初始化,即輸入1,1 - rD: VPiogr FilesMicrosaf t Vxs-uaL StudioVlyProjectsbyylDebucVbyyl.日目口第二汨曳i必須初始化!

11、 )IMMNKMKMNMMMMMMMMMM 主系單.WX *XX X*X*X««X* 1初始化順序棧-I* 2插入一個元素«I* 3期除犒頂元索xI* 4雌頂奇-I* S置空順序棧-I* 6緒察程序運行kI OflMB SMI BMMB WOBM«MMIBMAMBflMBflBUMB BMB請稀入您的選擇( 1 2. 3. 4. S, 6: 1Orf?®I進行初始化以后咱們就可正常對順序棧運算了,*3<-3(-JO<-*:MOO( X-WWX X 主菜 單.* 1初始化順序棧* 2插入一個元素* 3刪除棧頂元素* 4取棧頂元素* 5

12、置空順序棧* 6結束程序運行*請輸入您的選擇( 工,2, 3, 4, 5, 6)3Hl請輸入要插入的數據元素:弟。個數據是;二2以此類推,咱們將能夠測試出以下其它結果:第一次使用必須初始化!* 1初始化順序棧* 2插入一個元素* 3刪除棧頂元素* 4取棧頂元素* 5置空順序棧* 6結束程序運行請輸入您的選擇(1,2, 3, 4, 5, &: 3餞頂元素3已經被刪除?第0個數據是:2弟一次使用必須初始化! 再一次使用必須初始化!弁乂乂比比乂比主菜單* 1初始化順序棧* 2插入一個元素* 3刪除棧頂元素* 4取棧頂元素* 5置空順序棧«* 6結束程序運行*通輸入您的選擇(L 2, 3, 4, 5, 6: 21輸入要插入的數據元素=9是是是是 量據據 數數數數 個個個個 3 2 10咱們插入了多個元素,然后進行讀取棧頂元素及置空,如此更明顯些,請輸入您的選擇c( 2. 3. 4. 5. 6): 4度頂元素為;9>>>:>: S-S-S-S- 數數缸缸 個個個個 3 2 10請輸入您的選擇1, 2, 3. 4, 5, 6): 5順序棧被置空!這是一個空

溫馨提示

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

評論

0/150

提交評論