// StackTest.cpp : 定义控制台应用程序的入口点。
//
#include "stdafx.h"
#include <iostream>
using namespace std;
const int MAX_NUM = 100;
class CStack
{
private:
char chArray[MAX_NUM];//栈的实体
int nElement;//栈的元素总数
public:
CStack();
void push(char ch);//入栈
char pop();//出栈
char chTop();//返回栈顶元素
int nGetElementNum();//返回栈中元素数量
bool bEmpty();//判断栈是否为空
void print();//打印栈中元素
};
CStack::CStack()
{
for (int i=0;i<MAX_NUM;++i)
{
chArray[i] = '0';
}
nElement = 0;
}
void CStack::push( char ch )
{
if (nElement>=MAX_NUM-1)
{
cout<<"Stack is full."<<endl;
return;
}
chArray[nElement] = ch;
++nElement;
cout<<"push element is:"<<ch<<endl;
}
char CStack::pop()
{
if (nElement==0)
{
cout<<"Stack is empty."<<endl;
return '0';
}
--nElement;
char ch = chArray[nElement];
cout<<"pop element is:"<<ch<<endl;
return ch;
}
int CStack::nGetElementNum()
{
return nElement;
}
bool CStack::bEmpty()
{
if (nElement==0)
return true;
return false;
}
void CStack::print()
{
cout<<"chArray:";
for (int i=0;i<nElement;++i)
{
cout<<chArray[i];
}
cout<<endl;
}
char CStack::chTop()
{
if (nElement==0)
{
cout<<"Stack is empty."<<endl;
return '0';
}
return chArray[nElement-1];
}
int _tmain(int argc, _TCHAR* argv[])
{
const char ch[MAX_NUM] = "{[(({{[]}}))]}";
CStack stack;
int nCount = 0;//栈元素数量
char chTop;//栈顶元素
bool bSuccess=true;//是否成功匹配
int i = 0;
while (ch[i])
{
if (!bSuccess)
{
break;
}
switch(ch[i])
{
case '{':
stack.push(ch[i]);
break;
case '[':
stack.push(ch[i]);
break;
case '(':
stack.push(ch[i]);
break;
case ')':
nCount = stack.nGetElementNum();
if (nCount>0)
{
chTop = stack.chTop();
if (chTop=='(')
{
stack.pop();
}
else
{
bSuccess = false;
cout<<"匹配不成功!"<<endl;
}
}
break;
case ']':
nCount = stack.nGetElementNum();
if (nCount>0)
{
chTop = stack.chTop();
if (chTop=='[')
{
stack.pop();
}
else
{
bSuccess = false;
cout<<"匹配不成功!"<<endl;
}
}
break;
case '}':
nCount = stack.nGetElementNum();
if (nCount>0)
{
chTop = stack.chTop();
if (chTop=='{')
{
stack.pop();
}
else
{
bSuccess = false;
cout<<"匹配不成功!"<<endl;
}
}
break;
default:
break;
}
++i;
}
if (bSuccess)
{
cout<<"匹配成功!"<<endl;
}
system("pause");
return 0;
}
栈实现括号匹配
最新推荐文章于 2023-02-26 23:09:06 发布