📄 pipei.cpp
字号:
#include<iostream.h>
const int Maxsize=100;
class Stack
{
public:
Stack(){top1=-1,n=0;}
~Stack(){}
void Push(char s);
char Pop();
bool Compare(Stack &c);
void Setdata2(char s);
char Getdata2(int i){return data2[i];}
private:
char data1[Maxsize],data2[Maxsize];
int top1,n;
};
void Stack::Push(char s)
{
data1[++top1]=s;
}
char Stack::Pop()
{
if(top1==-1)throw"下溢";
return data1[top1--];
}
void Stack::Setdata2(char s)
{
data2[n]=s;
n++;
}
bool Stack::Compare(Stack &c)
{
if((*this).top1+1>c.n)
{
cout<<"左括号多了,不匹配"<<endl;
return 0;
}
if((*this).top1+1<c.n)
{
cout<<"右括号多了,不匹配"<<endl;
return 0;
}
else
{
while((*this).data1[top1])
{
int i=0;
if((*this).Pop()!=c.Getdata2(i))
{
break;
}
i++;
}
}
if(!(*this).data1[top1])
{
cout<<"括号匹配"<<endl;
return 1;
}
else
{
cout<<"左右括号类型不一样,不匹配"<<endl;
return 0;
}
}
void main()
{
int i=0;
Stack s1,s2;
char c[Maxsize];
cout<<"请输入括号字符串:";
cin>>c;
while(c[i])
{
if(c[i]=='('||c[i]=='{'||c[i]=='['||c[i]=='<')
s1.Push(c[i]);
else
{
if(c[i]==')')
c[i]='(';
if(c[i]=='}')
c[i]='{';
if(c[i]==']')
c[i]='[';
if(c[i]=='>')
c[i]='<';
s2.Setdata2(c[i]);
}
i++;
}
s1.Compare(s2);
}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -