用栈来实现括号匹配之优酷笔试题


用栈来实现括号匹配,每个栈有一个theArray和topOfStack,对于空栈其值为-1(这也就是空栈的初始化)。为了将某个元素压入到栈中,将topOfStack加1,然后置

theArray[topOfStack]=x。为了弹出栈元素,置pop函数的返回值为theArray[topOfStack],然后将topOfStack减1。

#include<stdio.h>

int isMatch(const char *code)
{
	int a[100];
	int i = -1;            //初始化空栈
	while(*code != '\0')
	{
		if(*code=='(' || *code=='{')          //压栈
			a[++i] = *code;
		else
			if(*code==')')                        
				if(a[i]=='(')
					i--;                  //出栈
				else
					return -1;
		else
			if(*code=='}')
				if(a[i]=='{')
					i--;          //出栈
				else
					return -1;
		code++;
	}
	if(i==-1)                   //栈已空说明全部匹配
		return 0;
	else
		return -1;
}
int main(int argc,char *argv[])
{
	char a[] = "({})(({()}))";
	printf("%d\n",isMatch(a));
	return 0;
}


  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值