// IsMatch.cpp : Defines the entry point for the console application.
//
#include "stdafx.h"
struct CharStack
{
struct Node
{
Node(char c)
{
this->c=c;
this->pNext=NULL;
}
char c;
struct Node *pNext;
};
struct Node *pTop;
CharStack()
{
pTop=NULL;
}
void push(char c)
{
Node* pNode=new Node(c);
if(pTop==NULL)
{
pTop=pNode;
}
else
{
pNode->pNext=pTop;
pTop=pNode;
}
}
char pop()
{
if(pTop==NULL)
return '\0';
else
{
char c=pTop->c;
Node* pTmp=pTop;
pTop=pTop->pNext;
delete pTmp;
return c;
}
}
};
bool isMatch(char* str)
{
CharStack stack;
char *p=str;
char popchar;
while(*p!='\0')
{
switch(*p)
{
case '(':
case '[':
case '{':
case '<':
stack.push(*p);
break;
case ')':
{
popchar=stack.pop();
if (popchar!='(')
return false;
}
break;
case ']':
{
popchar=stack.pop();
if (popchar!='[')
return false;
}
break;
case '}':
{
popchar=stack.pop();
if (popchar!='{')
return false;
}
break;
case '>':
{
popchar=stack.pop();
if (popchar!='<')
return false;
}
break;
default:
break;
}
/*
if(*p=='(')
{
stack.push(*p);
}
else if(*p==')')
{
char popchar=stack.pop();
if (popchar!='(')
return false;
}
*/
p++;
}
if(stack.pop()=='\0')
return true;
else
{
while(stack.pop()!='\0');
return false;
}
}
int main(int argc, char* argv[])
{
bool bans=isMatch(argv[1]);
if(bans)
{
printf("Yes!\n");
}
else
{
printf("No!\n");
}
return 0;
}
字符串括号匹配检查
最新推荐文章于 2024-03-06 19:39:02 发布