#include <stdio.h>
#include <stdlib.h>
#include <string.h>
#define TRUE 1
#define FALSE 0
#define STACK_SIZE 20
#define STRING_SIZE 64
typedef int Status;
typedef struct Stack
{
char string[STACK_SIZE];
int top;
} Stack,*StackPtr;
Status Stack_Init(StackPtr s);
void Stack_Pop(StackPtr s);
void Stack_Push(StackPtr s, char elem);
Status Stack_IsFull(StackPtr s);
Status Stack_IsEmpty(StackPtr s);
int main()
{
StackPtr stack;//先建立一个栈stack;
int i,result = 0;//给结果赋初值0;
char input[STRING_SIZE];//定义一个字符数组并定义最大限度
stack = (StackPtr)malloc(sizeof(Stack));//给予空间
if (Stack_Init(stack))//调用初始化
{
printf("请输入表达式:\n");
gets(input);
for (i = 0; i < STRING_SIZE; i++)//STRING_SIZE计算不超过最大限度
{
if (input[i] == '#')
break;
if (input[i] == '(' || input[i] == '{' || input[i] == '[')//左括号进栈
{
Stack_Push(stack, input[i]);//把左括号的值放到栈里面
++result;//结果加一
}
else if (input[i] == ')' || input[i] == '}' || input[i] == ']')//右括号出栈
{
Stack_Pop(stack);// if (!Stack_IsEmpty(s)) s->string[s->top--] = -1;栈出函数中有进行
--result;
}
}
if (result == 0)
{
printf("所有括号匹配成功!\n");
return 0;
}
printf("有括号未匹配!\n");
return 0;
}
return 0;
}
Status Stack_Init(StackPtr s)//初始化顺序栈
{
s->top = -1;
if (s == NULL)
{
printf("ERROR!!!分配内存失败!\n");
return FALSE;
}
return TRUE;
}
void Stack_Pop(StackPtr s)
{
if (!Stack_IsEmpty(s))
s->string[s->top--] = -1;
else
printf("ERROR!!!栈为空,无法进行出栈操作!\n");
}
void Stack_Push(StackPtr s, char elem)
{
if (!Stack_IsFull(s))
s->string[s->top++] = elem;
else
printf("ERROR!!!栈已满,无法进行入栈操作!\n");
}
Status Stack_IsEmpty(StackPtr s)
{
if (s->top == -1)
return TRUE;
return FALSE;
}
Status Stack_IsFull(StackPtr s)
{
if (s->top == (STRING_SIZE - 1))
return TRUE;
return FALSE;
}
不理解其中如果(]为什么不匹配,代码里哪里是这个意思?
- 写回答
- 好问题 0 提建议
- 关注问题
- 邀请回答
-
1条回答 默认 最新
- hmsy39 2021-10-03 21:44关注
这个代码是使用栈结构后进先出的特性,判断一个字符串中的 "()[]{}" 这些括号是否相互匹配
比如
()
和({})
和[{}()]
都是括号匹配的例子,左小括号对应右小括号,比如
(]
就是括号不匹配的例子(左小括号和右中括号不匹配本回答被题主选为最佳回答 , 对您是否有帮助呢?解决 无用评论 打赏 举报
悬赏问题
- ¥15 宇视监控服务器无法登录
- ¥15 PADS Logic 原理图
- ¥15 PADS Logic 图标
- ¥15 电脑和power bi环境都是英文如何将日期层次结构转换成英文
- ¥20 气象站点数据求取中~
- ¥15 如何获取APP内弹出的网址链接
- ¥15 wifi 图标不见了 不知道怎么办 上不了网 变成小地球了
- ¥50 STM32单片机传感器读取错误
- ¥50 power BI 从Mysql服务器导入数据,但连接进去后显示表无数据
- ¥15 (关键词-阻抗匹配,HFSS,RFID标签天线)