左右括号是否匹配用的栈

代码如下:

// isMatch.cpp : 定义控制台应用程序的入口点。
//

#include "stdafx.h"
#include <iostream>
#include<stack>
using namespace std;

void match(char* pData)
{
	stack<char> T;
	while (*pData!='\0')
	{
		switch (*pData)
		{
		case '(':
		case '[':
		case '{':
			T.push(*pData);
			pData++;
			break;
		case ')':
		case ']':
		case '}':
			if (T.empty())
			{
				cout<<"缺少左括号,不匹配"<<endl;
				return ;
			}
			T.pop();
			pData++;
			break;	
		default:
			pData++;
			break;
		}
	}
	if (T.empty())
	{
		cout<<"匹配"<<endl;
	}
	else
	{
		cout<<"不匹配"<<endl;
	}

}


int _tmain(int argc, _TCHAR* argv[])
{
	char* pData="{4*(8-3)-[(7-1)()*5-9]}*3-9*(5-3)";
	match(pData);

	system("pause");
	return 0;
}


 

你可能感兴趣的:(System)