LeetCode 20.有效括号 详解(c语言实现) (⌯꒪꒫꒪)੭

题目详情:

 思路:Step1:如果是左括号,入栈

          Step2:如果是右括号,就出栈顶的元素与右括号进行比对,如果匹配,继续,直到都匹配成功结束。否则退出,直接返回false.

栗子:1.  {[()]}      左括号  '{' '[' '('  入栈后与栈顶的右括号 )')'  ']' '}' 依次进行匹配,结果发现匹配,返回true.

2.  [(]}    左括号 '['  '('  入栈,遇到右括号 ']' 与栈顶的左括号 '('   匹配,匹配不上,返回false.

注意:无论匹配或者不匹配,都要摧毁栈,防止内泄漏

用c语言实现栈,没法直接引用,这里需要自己创建一个栈,在完成上述操作。如果还不会栈的小伙伴可以看看我的这篇博客 【数据结构】栈【详解】૮₍ ˃ ⤙ ˂ ₎ა-优快云博客

 栈的实现:

typedef int STDataType;
typedef struct Stack//栈的声明与定义
{
	STDataType* a;//定义一个指针,用于后续存储空间
	int top;
	int capacity;
}ST;
//初始化栈
void StackInit(ST* ps)
{
	assert(ps);//为初始化的栈开辟一个空间
	ps->a = (STDataType*)malloc(sizeof(STDataType) * 4);
	if (ps->a == NULL)
	{
		printf("malloc fail\n");
		exit(-1);
	}
//同时让其容量为当前栈开辟的空间
	ps->capacity = 4;
	ps->top = 0;
}
//摧毁栈
void StackDestory(ST* ps)
{
	assert(ps);
	free
评论 5
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值