栈--括号匹配

2014-11-23 23:33:53 · 作者: · 浏览: 12
#include
#include
#include
#include
using namespace std;
struct node{
	int size;
	char *base,*top;
};
node stack;
const int stacksize=10;
bool isbracket(char x)
{
	if(x=='('||x==')'||x=='['||x==']')
		return true;
	return false;
}
int main()
{
	string s;
	int i,flag;
	flag=1;
	stack.size=stacksize;
	stack.base=(char*)malloc(stack.size*sizeof(char));
	if(!stack.base)
		exit(OVERFLOW);
	stack.top=stack.base;
	getline(cin,s);
	for(i=0;i=stack.size)
		{
			stack.base=(char*)realloc(stack.base,(stack.size+stacksize)*sizeof(char));
			stack.top=stack.base+stack.size;
			stack.size+=stacksize;
		}
		if(isbracket(s[i]))
		{
			if(s[i]=='('||s[i]=='[')
			{
				*stack.top=s[i];
				stack.top+=1;
			}
			else {
				if(stack.base==stack.top)
				{
					flag=0;
					cout<<"error"<