c语言数据结构括号匹配的检验代码case
时间: 2023-05-26 17:06:28 浏览: 114
以下是一个C语言数据结构括号匹配的检验代码示例:
```c
#include <stdio.h>
#include <string.h>
#define MAX_STACK_SIZE 100
char stack[MAX_STACK_SIZE];
int top = -1;
void push(char c)
{
stack[++top] = c;
}
char pop()
{
return stack[top--];
}
int is_empty()
{
return (top == -1) ? 1 : 0;
}
int is_full()
{
return (top == MAX_STACK_SIZE - 1) ? 1 : 0;
}
int is_matching_pair(char left, char right)
{
if (left == '(' && right == ')')
return 1;
else if (left == '{' && right == '}')
return 1;
else if (left == '[' && right == ']')
return 1;
else
return 0;
}
int is_balanced(char expr[])
{
int i;
for (i = 0; i < strlen(expr); i++)
{
if (expr[i] == '(' || expr[i] == '{' || expr[i] == '[')
push(expr[i]);
if (expr[i] == ')' || expr[i] == '}' || expr[i] == ']')
{
if (is_empty())
return 0;
else if (!is_matching_pair(pop(), expr[i]))
return 0;
}
}
if (is_empty())
return 1;
else
return 0;
}
int main()
{
char expr[MAX_STACK_SIZE];
printf("Enter expression: ");
scanf("%s", expr);
if (is_balanced(expr))
printf("The expression is balanced.\n");
else
printf("The expression is not balanced.\n");
return 0;
}
```
在此代码中,我们定义了一个字符数组`stack`作为栈,并通过`top`变量记录了栈顶的下标。然后我们实现了一些基本的栈操作,比如`push`和`pop`等。
接着,我们定义了一个`is_matching_pair`函数来判断左右括号是否匹配。接着,我们定义了一个`is_balanced`函数来检验括号是否匹配。
在`is_balanced`函数中,我们对输入的字符数组进行遍历。如果遇到左括号,我们将其压入栈中。如果遇到右括号,我们先判断栈是否为空,如果为空,则说明缺少左括号使其匹配不上,我们直接返回0。否则,我们将栈顶元素弹出,并检查左右括号是否匹配。如果不匹配则返回0。循环结束后,如果栈为空则说明括号都已经匹配上了,返回1,否则返回0。
最后在main函数中,我们读取输入的字符数组,调用`is_balanced`函数进行匹配检验,并输出相应的结果。
阅读全文