数据结构(C语言)——2栈:括号匹配问题

趁着复习把课上的作业和代码上传上来嘿嘿嘿,这个系列的代码都是自己写的或者老师教学用的可能内存管理上有点小瑕疵,但是算法理解还是不错的!本系列所有代码在dev-cpp上可以跑通~

描述:

输入(){}[]等括号,看括号是否匹配。

思路:

左括号入栈,右括号看栈顶是否对应的左括号,是则出栈(如果有东西就一直出栈到遇到左括号),如果发现不对应就是不匹配。

代码:

#include<stdio.h>
int main(){
	char s;
	char Q[101];
	int top=0;
	do{
		scanf("%c",&s);
		if(s=='('||s=='['){
			Q[top++]=s;
			//printf("%c",Q[top-1]);
		}
		else if(s==')'){
			if(Q[--top]!='('){
				break;
			}
		}
		else if(s==']'){
			if(Q[--top]!='['){
				break;
			}
		}
	}
	while(s!='\n');
	if(top==0){
		printf("1");
	}
	else{
		printf("0");
	}
	return 0;
}

出栈的话是Stack[--top],入栈的话是Stack[top++]。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值