驗證性實驗3:棧子系統(tǒng)Word版_第1頁
驗證性實驗3:棧子系統(tǒng)Word版_第2頁
驗證性實驗3:棧子系統(tǒng)Word版_第3頁
驗證性實驗3:棧子系統(tǒng)Word版_第4頁
驗證性實驗3:棧子系統(tǒng)Word版_第5頁
已閱讀5頁,還剩1頁未讀, 繼續(xù)免費閱讀

下載本文檔

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

文檔簡介

1、驗證性實驗3:棧子系統(tǒng)1. 實驗目的(1) 掌握棧的特點及其描述方法。(2) 用鏈式儲存結構實現(xiàn)一個棧。(3) 掌握建棧的各種基本操作。(4) 掌握棧的幾個典型應用的算法。2. 實驗內容(1) 設計一個字符型的鏈棧。(2) 編寫進棧,出棧,顯示棧中全部元素的程序。(3) 編寫一個把十進制整數(shù)轉換成二進制數(shù)的應用程序。(4) 編寫一個把中綴表達式轉換成后綴表達式(逆波蘭式)的應用程序。(5) 設計一個選擇式菜單,以菜單方式選擇上述操作。棧子系統(tǒng)* * 1-進 棧 * * 2-出 棧 * * 3-顯 示 * * 4-數(shù)制轉換 * * 5-逆波蘭式 * * 0-返 回 * *請選擇菜單號(0-5):

2、3.參考程序#include<stdio.h>#include<stdlib.h>#define STACKMAX 100typedef struct stacknode int data; struct stacknode *next;StackNode;typedef struct StackNode *top;LinkStack;void Push(LinkStack &s,int x) StackNode *p=new StackNode; p->data=x; p->next=s.top; s.top=p;int Pop(LinkStack

3、 &s,int &x) StackNode *p; if(s.top!=NULL) p=s.top; x=p->data; s.top=p->next; delete p; return 1; else return 0;void ShowStack(LinkStack s) StackNode *p=s.top; if(p=NULL) printf("ntt棧為空。"); else printf("ntt棧元素為:"); while(p!=NULL) printf("%6d",p->data); p

4、=p->next; printf("n"); void Conversion(int n) LinkStack s; int x; s.top=NULL; do x=n%2; n=n/2; Push(s,x); while(n); printf("ntt轉換后的二進制數(shù)值為:"); while(Pop(s,x) printf("%d",x); printf("n");void Suffix() char strSTACKMAX; char stackSTACKMAX; char expSTACKMAX; ch

5、ar ch; int sum,i,j,t,top=0; printf("ntt輸入算數(shù)表達式(運算符只能包含+,-,*,/),以#結束:ntt"); fflush(stdin); i=0; do i+; scanf("%c",&stri); while(stri!='#'&&i!=STACKMAX); sum=i; t=1; i=1; ch=stri; i+; while(ch!='#') switch(ch) case '(': top+; stacktop=ch;break; c

6、ase ')':while(stacktop!='(') expt+=stacktop-; expt+=','top-;break; case '+': case '-': while(top!=0 && stacktop!='(') expt+=stacktop-; expt+=','stack+top=ch;break; case '*': case '/':while(stacktop='*'|stacktop=&

7、#39;/') expt+=stacktop-; expt+=','stack+top=ch; break; case ' ':break; default:while(ch>='0'&&ch<='z') expt+=ch; ch=stri+;i-;expt+=',' ch=stri+; while(top!=0) expt+=stacktop-; if(top!=0) expt+=',' printf("ntt輸入的中綴表達式:"); for

8、(j=1;j<sum;j+) printf("%c",strj); printf("ntt后綴表達式:"); for(j=1;j<t;j+) printf("%c",expj); printf("n");void main() LinkStack s; int i=1,j=1,val,n; char choice; s.top=NULL; while(1) printf("n"); printf("ntt 棧子系統(tǒng) "); printf("ntt*&qu

9、ot;); printf("ntt* 1-進 棧 *"); printf("ntt* 2-出 棧 *"); printf("ntt* 3-顯 示 *"); printf("ntt* 4-數(shù)制轉換 *"); printf("ntt* 5-逆波蘭式 *"); printf("ntt* 0-退出程序 *"); printf("ntt*"); printf("ntt 請選擇菜單號(0-5):"); fflush(stdin); choice=g

10、etchar(); switch (choice) case '1': while(1) printf("ntt鍵入一個整數(shù)('0'表示結束)并按回車:"); scanf("%d",&val); if(val!=0) Push(s,val); elsebreak; break; case '2': if(Pop(s,val) printf("ntt出棧元素為:%6dn",val); elseprintf("ntt棧為空,沒有元素可以出棧!n"); break; case '3': ShowStack(s); break; case '4': printf("ntt請輸入一個十進制正整數(shù):"); scanf("%d",&

溫馨提示

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

評論

0/150

提交評論