亚洲在线久爱草,狠狠天天香蕉网,天天搞日日干久草,伊人亚洲日本欧美

為了賬號安全,請及時綁定郵箱和手機立即綁定

標準模板庫實現

學了標準模板庫,就該用標準模板庫解決問題

#include<iostream>

#include<string>

#include<stack>

using namespace std;

char judge(char c)

? ? {

? ? char cneed;

? ? switch(c)

? ? {

? ? ? ? case '{':cneed='}';break;

? ? ? ? case '[':cneed=']';break;

? ? ? ? case '(':cneed=')';break;

? ? }

? ? return cneed;

}

int main()

{

? ? stack<char> s;

? ? string brackets;

? ? cin>>brackets;

? ? for(int i=0;i<brackets.size();i++)

? ? {

? ? ? ? if(s.empty())

? ? ? ? {

? ? ? ? ? ? s.push(brackets[i]);

? ? ? ? ? ? continue;

? ? ? ? }

? ? ? ? judge(s.top())==brackets[i]?s.pop():s.push(brackets[i]);

? ? }

? ? s.empty()? cout<<"匹配":cout<<"不匹配";

? ? return 0;

}

還有更好的寫法嗎?

正在回答

3 回答

//?myself?void?bracketMatch1(const?char*?str)?{	MyStack<char>*?pMatch?=?new?MyStack<char>(30);	char?currentNeed?=?0;	for?(int?i?=?0;?i?<?strlen(str);?i++)?{		if?(str[i]?==?currentNeed)?{			if?(pMatch->pop(currentNeed)?==?0)?currentNeed?=?0;?				//?1.?通過pMatch更新當前待匹配括號				//?2.?pMatch為空時,需給當前待匹配括號置零		}		else?{			if?(currentNeed?!=?0)?pMatch->push(currentNeed);			currentNeed?=?str[i]?==?'('???')'?:?(str[i]?==?'['???']'?:?'k');		}	}	pMatch->stackEmpty()&&currentNeed==0???cout?<<?"Yes"?<<?endl?:?cout?<<?"No"?<<?endl;	delete?pMatch;	pMatch?=?nullptr;}


0 回復 有任何疑惑可以回復我~

非常好,再加上空格等非括號判斷就完美了

0 回復 有任何疑惑可以回復我~
#include?<iostream>#include?<stdlib.h>#include?"stack.h"#include?"coordinate.h"using?namespace?std;//函數聲明bool?BrackerMatch(char?*str);//主函數int?main(){		/*	棧應用--括號匹配	描述:任意輸入一組括號,判斷括號是否匹配	*/	char?str[]=?"([]})";	if?(BrackerMatch(str))?{		cout?<<?"括號成功匹配"?<<?endl;	}	else	{		cout?<<?"括號不匹配"?<<?endl;	}	system("pause");	return?0;}bool?BrackerMatch(char?*str)?{	MyStack<char>?*p?=?new?MyStack<char>(30);	char?e?=?0;	for?(int?i?=?0;?i?<?strlen(str);?i++)	{		switch(str[i])?{			case?'(':				p->push(str[i]);				p->stackTraverse(false);				break;			case?'[':?p->push(str[i]);?break;			case?'{':?p->push(str[i]);?break;			case?')':				if?(p->getTopElement()!='(')				{						cout?<<?p->getTopElement()?<<?endl;					return?false;				}				else				{						p->pop(e);					break;				}			case?']':				if?(p->getTopElement()?!=?'[')				{					return?false;				}				else				{					p->pop(e);					break;				}			case?'}':				if?(p->getTopElement()?!=?'}')				{					return?false;				}				else				{					p->pop(e);					break;				}			default:				break;		}	}	return?p->stackEmpty();}


0 回復 有任何疑惑可以回復我~

舉報

0/150
提交
取消

標準模板庫實現

我要回答 關注問題
微信客服

購課補貼
聯系客服咨詢優惠詳情

幫助反饋 APP下載

慕課網APP
您的移動學習伙伴

公眾號

掃描二維碼
關注慕課網微信公眾號