数据结构——括号的匹配完整程序

#include 
  
  
   
   
#define MAXSIZE 100
typedef int selemtype;
using namespace std;
typedef struct {      //顺序栈的存储结构
	selemtype *base;
	selemtype *top;
	int stacksize;
}SqStack;
void InitStack(SqStack &s) {     //栈的初始化
	s.base = new selemtype[MAXSIZE];
	if (!s.base)exit(1);
	s.top = s.base;
	s.stacksize = MAXSIZE;
}
void Push(SqStack &s, selemtype e) {    //入栈
	if (s.top - s.base == s.stacksize)return;
	*s.top++ = e;
}
bool StackEmpty(SqStack &s) {     //判断栈空
	if (s.top == s.base)return true;
	else return false;
}
selemtype GetTop(SqStack s) {    //得到栈顶元素
	if (s.top != s.base)
		return *(s.top - 1);
}
void Pop(SqStack &s, selemtype &e) {     //压栈
	if (s.top == s.base)return;
	e = *--s.top;
}
int main() {    //主函数
	SqStack s;     //参数的定义
	selemtype e;
	char ch;
	int x;
	InitStack(s);
	int flag = 1;
	cout << "请输入算数表达式,以#结束" << endl;
	cin >> ch;
	while (ch != '#'&&flag)       //具体的判断函数
	{
		switch (ch) {
		case'[':
		case'(':
			Push(s, ch);
			break;
		case')':
			if (!StackEmpty(s) && GetTop(s) == '(')
				Pop(s, x);
			else flag = 0;
			break;
		case']':
			if (!StackEmpty(s) && GetTop(s) == '[')
				Pop(s, x);
			else flag = 0;
			break;
		}
		cin >> ch;
	}
	if (StackEmpty(s) && flag)cout<<"匹配成功";
	else cout<<"匹配失败";
	return 0;
}
  
  


评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值