實(shí)驗(yàn)一一個(gè)順序棧的基本運(yùn)算實(shí)驗(yàn)_第1頁
實(shí)驗(yàn)一一個(gè)順序棧的基本運(yùn)算實(shí)驗(yàn)_第2頁
實(shí)驗(yàn)一一個(gè)順序棧的基本運(yùn)算實(shí)驗(yàn)_第3頁
實(shí)驗(yàn)一一個(gè)順序棧的基本運(yùn)算實(shí)驗(yàn)_第4頁
實(shí)驗(yàn)一一個(gè)順序棧的基本運(yùn)算實(shí)驗(yàn)_第5頁
已閱讀5頁,還剩4頁未讀, 繼續(xù)免費(fèi)閱讀

下載本文檔

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

文檔簡介

1、實(shí)驗(yàn)一 一個(gè)順序棧的基本運(yùn)算實(shí)驗(yàn)一、實(shí)驗(yàn)?zāi)康模?對(duì)一個(gè)順序棧的基本運(yùn)算進(jìn)行分析與設(shè)計(jì),回顧數(shù)據(jù)結(jié)構(gòu)所學(xué)過的知識(shí),掌握一個(gè)順序棧的基本運(yùn)算實(shí)現(xiàn),為下一步的實(shí)驗(yàn)奠定基礎(chǔ)。二、實(shí)驗(yàn)要求: 要求對(duì)一個(gè)順序棧的基本運(yùn)算作設(shè)計(jì)性實(shí)驗(yàn),并上機(jī)運(yùn)行,撰寫實(shí)驗(yàn)報(bào)告。三、實(shí)驗(yàn)內(nèi)容:一個(gè)順序棧的數(shù)據(jù)類型表示和初始化、進(jìn)棧、出棧基本運(yùn)算。4、 實(shí)驗(yàn)環(huán)境:windows xp + vc+6.0開發(fā)環(huán)境。5、 實(shí)驗(yàn)步驟:1、 對(duì)順序棧的知識(shí)進(jìn)行復(fù)習(xí),弄清楚棧的算法思想。2、 熟悉順序棧的幾種基本運(yùn)算,即:(1)初始化棧int initstack(sqstack *s)/*創(chuàng)建一個(gè)空棧由指針s指出*/  if (

2、s=(sqstack*)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-1)  return false; /*棧滿*/  s->top+;  s->stacks->top=x;return  true;(3)出棧操作elemtype pop(sqst

3、ack *s)/*若棧s不為空,則刪除棧頂元素*/elemtype  x; if(s->top<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的位置,而取棧頂元素操作

4、不改變棧的棧頂指針.(5)判棧空操作int empty(sqstack *s)/*棧s為空時(shí),返回為true;非空時(shí),返回為false*/  if(s->top<0) return true;   return false;(6)置空操作void setempty(sqstack *s)/*將棧s的棧頂指針top,置為-1*/s->top= -1;3、 上機(jī)調(diào)試。源代碼如下:#include<stdio.h>#include<stdlib.h>#define maxnum 30#define elemtype int/*定義順序棧的

5、存儲(chǔ)結(jié)構(gòu)*/typedef structelemtype stackmaxnum;int top;sqstack;/*初始化順序棧*/void initstack(sqstack *p)if(!p) printf("error");p->top=-1;/*入棧*/void push(sqstack *p,elemtype x)if(p->top<maxnum-1) p->stack+p->top=x;else printf("overflow!n");/*出棧*/elemtype pop(sqstack *p)elemtyp

6、e x;if(p->top!=0)x=p->stackp->top;printf("棧頂元素%d已經(jīng)被刪除!n",p->stackp->top);p->top-;return (x);elseprintf("underflow!n");return(0);/*獲取棧頂元素*/elemtype gettop(sqstack *p) if(p->top!=0) return (p->stackp->top); else printf("underflow!n"); return(0);

7、 /*遍歷順序棧*/void outstack(sqstack *p) int i; printf("n"); if(p->top<0) printf("這是一個(gè)空棧!n"); for(i=p->top; i>=0; i-) printf("第%d個(gè)數(shù)據(jù)是:%6dn", i, p->stacki);/*置空順序棧*/void setempty(sqstack *p) p->top=-1; /*主函數(shù)*/main() sqstack *q; int y, cord; elemtype a; do pr

8、intf("n第一次使用必須初始化!n"); printf("n"); printf("n * 主菜單* n"); printf("n * 1 初始化順序棧 * n"); printf("n * 2 插入一個(gè)元素 * n"); printf("n * 3 刪除棧頂元素 * n"); printf("n * 4 取棧頂元素 * n"); printf("n * 5 置空順序棧 * n"); printf("n * 6 結(jié)束程序運(yùn)

9、行 * n"); printf("n-n"); printf("請(qǐng)輸入您的選擇( 1, 2, 3, 4, 5, 6): "); scanf("%d", &cord); printf("n"); switch(cord) case 1: q=(sqstack*)malloc(sizeof(sqstack); initstack(q); outstack(q); break; case 2: printf("請(qǐng)輸入要插入的數(shù)據(jù)元素: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); outstack(q); break; case 5: setempty(q); printf("n 順序棧被置空!n"); outstack(q); break; case 6: exit(0); while (cord<=6);6、 實(shí)驗(yàn)測試結(jié)果

溫馨提示

  • 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ì)自己和他人造成任何形式的傷害或損失。

最新文檔

評(píng)論

0/150

提交評(píng)論