解決問題的核心步驟_第1頁
解決問題的核心步驟_第2頁
解決問題的核心步驟_第3頁
解決問題的核心步驟_第4頁
全文預覽已結束

下載本文檔

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

文檔簡介

1、精選優質文檔-傾情為你奉上解決問題的核心步驟:1、構造一個20字節的棧,不夠再10個10個地追加2、從第一個字符開始檢查,遇到左括號,進棧,遇見右括號時檢查棧頂元素是否與之相匹配,是則彈出棧頂元素;否,則返回0程序構造思想主程序模塊char main() 定義變量 定義指向棧的指針 讀入字符串 調用Match()函數棧的初始化InitStack() 創建一個可以存儲20個字節的棧 若創建失敗,退出壓棧PushStack() 判斷棧是否棧滿,棧滿,追加 若存儲分配失敗,退出 e賦值給top所指向的單元 top向上移一位獲取棧頂元素GetTop() 返回top-1所指單元的值匹配函數Match()

2、 for 從首字符開始判斷 遇到左括號,進棧 遇到右括號,和棧頂字符比較,與之匹配,棧頂元素彈棧 遇到不匹配的右括號,提示配對失敗 返回r值(bool函數)程序源代碼#include <iostream>#include <stdlib.h>#include<malloc.h> #include<stdio.h>#include<stack>using namespace std;#define STACK_INIT_SIZE 20#define STACKINCREMENT 10/類型說明typedef struct char *

3、base; /設置棧底指針char * top; /設置棧頂指針int stacksize;SqStack;/構造一個棧Svoid InitStack(SqStack *S)S->base = (char *) malloc (STACK_INIT_SIZE ); /分配可以放得下個整數的內存空間。if(!S->base) exit (0); /存儲分配失敗S->top=S->base;S->stacksize=STACK_INIT_SIZE;/插入新的棧頂元素evoid Push(SqStack *S,char e)if(S->top - S->ba

4、se >=S->stacksize)/棧滿,追加存儲空間S->base =(char * )realloc(S->base, (S->stacksize + STACKINCREMENT);if(!S->base) exit (0); /存儲分配失敗S->top =S->base +S->stacksize ;S->stacksize +=STACKINCREMENT;* S->top=e;S->top+;/獲取棧頂元素char GetTop(SqStack *S)if(S->top=S->base ) ret

5、urn 0;return *(S->top - 1); /彈出棧頂元素echar Pop(SqStack *S)if(S->top=S->base ) return 0;/棧空,返回ERRORreturn *(-S->top); /棧不空,用e返回棧頂元素/棧空int Empty(SqStack *S)if(S->base =S->top) return 1;else return 0;/匹配函數bool Match(char c40, SqStack *S)int i;bool r = true;InitStack(S);for(i=0;i<20;i

6、+) /從首元素開始判斷if(ci&&(ci='('|ci='')/是否為左括號,Push(S,ci); /是,進棧cout<<"Push a parenthesis "<<ci<<" into the stack!"<<endl;else if(ci&&ci=')') /是否為右括號if(GetTop(S)&&GetTop(S)='(')/是,判斷前一括號是否為與之相對的括號Pop(S); /是

7、,彈棧cout<<"Success to match one pair of parenthesis ( ) "<<endl; else cout<<"Fail to match a pair of parenthesis( )"<<endl; r=false;else if(ci&&ci='') /是否為右括號if(GetTop(S)&&GetTop(S)='')/是,判斷前一括號是否為與之相對的括號Pop(S); /是,彈棧cout<

8、<"Success to match one pair of parenthesis " << endl; elsecout<<"Fail to match a pair of parenthesis "<<endl; r = false; return r;char main()char c40;SqStack s, *S = &s;cout<<"please input a series of chars"<<endl;cin>>c;if(Match(c, S)&&(

溫馨提示

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

評論

0/150

提交評論