C++頂用棧來斷定括號字符串婚配成績的完成辦法。本站提示廣大學習愛好者:(C++頂用棧來斷定括號字符串婚配成績的完成辦法)文章只能為提供參考,不一定能成為您想要的結果。以下是C++頂用棧來斷定括號字符串婚配成績的完成辦法正文
本文實例重要完成:輸出一個括號字符串,順次磨練,若為左括號則入棧,若為右括號則出棧一個字符斷定能否與之絕對應,在最初還需斷定棧能否為空,假如不為空則不婚配。
起首回想棧的根本常識:
1.界說棧的構造體並初始化一個新棧:
struct stack { char strstack[stacksize]; int top; }; void InitStack(stack &s) { s.top=-1; }
2.出棧和入棧操作:
char Push(stack &s,char a) { if(s.top==stacksize-1) { return 0; } s.top++; s.strstack[s.top]=a; return a; } char Pop(stack &s) { if(s.top==-1) { return 0; } char a=s.strstack[s.top]; s.top--; return a; }
3.斷定棧能否為空:
int Empty(stack &s,int re) { if(s.top==-1) { return 1; } else { return 0; } }
以上是棧的根本操作,界說一個棧和初始化一個新棧,出棧和入棧操作,和斷定棧能否為空的情形。接上去將寫一個函數,檢討字符串的每一個字符,左括號則停止入棧操作,右括號則停止出棧操作看其能否婚配,最初斷定能否為空以剖斷能否婚配。
重要功效代碼以下:
int Check(char *str) { stack s; InitStack(s); int strn=strlen(str); for(int i=0;i<strn;i++) { char a=str[i]; switch (a) { case '(': case '[': case '{': Push(s,a); break; case ')': if(Pop(s)!='(') { return 0; } break; case ']': if(Pop(s)!='[') { return 0; } break; case '}': if(Pop(s)!='{') { return 0; } break; } } int re=0; re=Empty(s,re); if(re==1) { return 1; } else { return 0; } }
自此,括號字符串婚配的斷定成績曾經處理,上面貼出完全的經由編譯運轉過的代碼。
完全實例代碼以下:
#include <iostream> #include <stdio.h> #include <string.h> using namespace std; #define stacksize 100 struct stack { char strstack[stacksize]; int top; }; void InitStack(stack &s) { s.top=-1; } char Push(stack &s,char a) { if(s.top==stacksize-1) { return 0; } s.top++; s.strstack[s.top]=a; return a; } char Pop(stack &s) { if(s.top==-1) { return 0; } char a=s.strstack[s.top]; s.top--; return a; } int Empty(stack &s,int re) { if(s.top==-1) { return 1; } else { return 0; } } int Check(char *str) { stack s; InitStack(s); int strn=strlen(str); for(int i=0;i<strn;i++) { char a=str[i]; switch (a) { case '(': case '[': case '{': Push(s,a); break; case ')': if(Pop(s)!='(') { return 0; } break; case ']': if(Pop(s)!='[') { return 0; } break; case '}': if(Pop(s)!='{') { return 0; } break; } } int re=0; re=Empty(s,re); if(re==1) { return 1; } else { return 0; } } void main() { char str[100]; cout<<"請輸出一個長度小於100的字符串:"<<endl; cin>>str; int re=Check(str); if(re==1) { cout<<"你輸出的字符串括號完整婚配!"<<endl; } else if(re==0) { cout<<"你輸出的字符串括號不婚配!"<<endl; } }
願望本文所述實例對年夜家C++算法設計的進修有所贊助。