括号匹配(栈的应用)

根据栈“先入后出”的特性,我们可以利用栈进行括号匹配检验。

思路分析:

小括号()、中括号【】、大括号{},检查括号是否匹配,当遇到左括号时,入栈,遇到右括号出栈,最后检查栈中是否还堆积有元素,如果有证明匹配失败,如果栈空,证明匹配成功。

算法实现:

Status Matching()
{
	InitStack(S);
	char ch;
	int flag = 1;
	cin >> ch;
	while (ch != '#' && flag)//设表达式以‘#’结束
	{
		switch (ch)
		{
		case '{':
		case '[':
		case '(':
			Push(S, ch);
			break;
		case ')':
			if (!EmptyStack(S) && GetTop(S) == '(')
				Pop(S, x);
			else
				flag = 0;
			break;
		case ']':
			if (!EmptyStack(S) && GetTop(S) == '[')
				Pop(S, x);
			else
				flag = 0;
			break;
		case '}':
			if (!EmptyStack(S) && GetTop(S) == '{')
				Pop(S, x);
			else
				flag = 0;
			break;
		}
		cin >> ch;
	}
	if (EmptyStack(S) && flag)
		return OK;
	else
		return ERROR;
}

栈的基本操作附Gitee链接,请自行取用C_start: C语言学习开始的地方

你可能感兴趣的:(数据结构,学习,数据结构,c语言,程序人生)