數(shù)據(jù)結(jié)構(gòu)c語言版_第1頁
數(shù)據(jù)結(jié)構(gòu)c語言版_第2頁
數(shù)據(jù)結(jié)構(gòu)c語言版_第3頁
數(shù)據(jù)結(jié)構(gòu)c語言版_第4頁
數(shù)據(jù)結(jié)構(gòu)c語言版_第5頁
已閱讀5頁,還剩2頁未讀 繼續(xù)免費(fèi)閱讀

下載本文檔

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

文檔簡介

數(shù)據(jù)結(jié)構(gòu)c語言版實(shí)現(xiàn)順序棧的抽象數(shù)據(jù)類型實(shí)現(xiàn)順序棧的建立、銷毀、取棧頂元素、壓棧、彈棧的運(yùn)算給出表達(dá)式的括號匹配檢測算法創(chuàng)建運(yùn)算符棧和運(yùn)算數(shù)棧實(shí)現(xiàn)有一定通用性的程序,實(shí)現(xiàn)一個(gè)四則運(yùn)算表達(dá)式的求解實(shí)驗(yàn)代碼圖片實(shí)現(xiàn)順序棧的抽象數(shù)據(jù)類型typedefstruct{SElemType*base;SElemType*top;intstacksize;}SqStack;圖片實(shí)現(xiàn)順序棧的建立、銷毀、取棧頂元素、壓棧、彈棧的運(yùn)算//建立StatusInitStack(SqStack&s){s.base=(SElemType*)malloc(STACK_INIT_SIZE*sizeof(SElemType));if(!s.base)exit(overflow);s.top=s.base;s.stacksize=STACK_INIT_SIZE;returnOK;}//銷毀voidDestroyStack(SqStack&s){free(s.base);cout<<"Successtodestroy!";}//取棧頂元素StatusGetTop(SqStacks,SElemTypee){if(s.top==s.base)returnerror;e=*(s.top-1);returnOK;}//壓棧StatusPush(SqStack&s,SElemTypee){if(s.top-s.base>=s.stacksize){s.base=(SElemType*)realloc(s.base,(s.stacksize+STACKINCREMENT)*sizeof(SElemType));if(!s.base)exit(overflow);s.top=s.base+s.stacksize;s.stacksize+=STACKINCREMENT;}//endofif*s.top=e;s.top++;returnOK;}//彈棧StatusPop(SqStack&s,SElemType&e){if(s.top==s.base)returnerror;--s.top;e=*s.top;returnOK;}給出表達(dá)式的括號匹配檢測算法Statusmatching(stringexp){SqStacks;InitStack(s);SElemTypee;intstate=1,i=0,len;len=exp.length();while(i<len&&state==1)switch(exp[i]){case'(':case'[':case'{':{Push(s,exp[i]);i++;break;}case')':{GetTop(s,e);if(!StackEmpty(s)&&e=='('){Pop(s,e);i++;}elsestate=0;break;}case']':{GetTop(s,e);if(!StackEmpty(s)&&e=='['){Pop(s,e);i++;}elsestate=0;break;}case'}':{GetTop(s,e);if(!StackEmpty(s)&&e=='{'){Pop(s,e);i++;}elsestate=0;break;}default:i++;}//endofswitchif(StackEmpty(s)&&!state)returnOK;elsereturnerror;}圖片創(chuàng)建運(yùn)算符棧和運(yùn)算數(shù)棧#include<iostream>#include<algorithm>#include<cstring>#include<stack>#include<cmath>usingnamespacestd;stack<char>optr;//操作符棧stack<double>opnd;//操作數(shù)棧實(shí)現(xiàn)有一定通用性的程序,實(shí)現(xiàn)一個(gè)四則運(yùn)算表達(dá)式的求解/*利用兩個(gè)棧進(jìn)行模擬計(jì)算*/doubleCompute(){stack<char>optr;//操作符棧stack<double>opnd;//操作數(shù)棧optr.push('#');intlen=strlen(s);boolis_minus=true;//判斷'-'是減號還是負(fù)號for(g_pos=0;g_pos<len;){//1.負(fù)號if(s[g_pos]=='-'&&is_minus)//是負(fù)號{opnd.push(0);optr.push('-');g_pos++;}//2.是右括號)elseif(s[g_pos]==')'){is_minus=false;g_pos++;while(optr.top()!='('){doublea2=opnd.top();opnd.pop();doublea1=opnd.top();opnd.pop();charop=optr.top();optr.pop();doubleresult=Operate(a1,op,a2);opnd.push(result);}optr.pop();//刪除'('}//3.數(shù)字elseif(s[g_pos]>='0'&&s[g_pos]<='9'){is_minus=false;opnd.push(Translation(g_pos));}//4.(左括號elseif(s[g_pos]=='('){is_minus=true;optr.push(s[g_pos]);g_pos++;}//5.+-*/四種else{while(GetLevel(s[g_pos])<=GetLevel(optr.top())){doublea2=opnd.top();opnd.pop();doublea1=opnd.top();opnd.pop();charop=optr.top();optr.pop();doubleresult=Operate(a1,op,a2);opnd.push(result);}optr.push(s[g_pos]);g_pos++;}}while(optr.top()!='#'){doublea2=opnd.top();

溫馨提示

  • 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)確性、安全性和完整性, 同時(shí)也不承擔(dān)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。

評論

0/150

提交評論