(C语言)检测括号是否匹配

举报
zstar 发表于 2022/08/06 01:22:34 2022/08/06
【摘要】 程序设计基础课大作业1 #include<stdio.h> #include<stdlib.h> #include<string.h> #include&l...

程序设计基础课大作业1

#include<stdio.h>
#include<stdlib.h>
#include<string.h>
#include<malloc.h>
#define maxsize 1024
typedef char datatype;
typedef struct
{  datatype elements[maxsize];
   int top;
}stack;

void setnull(stack *&);
void push(stack*,datatype);
datatype pop(stack*);

//栈初始化
void setnull(stack *&s)
{
	s=(stack*)malloc(sizeof(stack));
	s->top=-1;
}

//顺序栈入栈
void push(stack*s,datatype e)
{
	s->top++;
	s->elements[s->top]=e;
}

int main()
{
	char cur_char;
	char str[maxsize] = "\0";
	stack *s;
	
	setnull(s);
	push(s,'a');
	
	printf("请输入需要判断的字符串\n");
	gets(str);
	
	for(int i=0;i<strlen(str);i++)
	{
		cur_char = str[i];
		switch(cur_char)
		{
			case'{':
			case'[':
			case'(':
				push(s,cur_char);
				break;
			case'}':
				if(s->elements[s->top] == '{')
				{
					s->top--;//出栈 
					break;
				}
				else
				{
					printf("NO\n");
					return 0;
				}
			case']':
				if(s->elements[s->top]=='[')
				{
					s->top--;
					break;
				}
				else
				{
					printf("NO\n");
					return 0;
				}
			case')':
				if(s->elements[s->top] == '(')
				{
					s->top--;
					break;
				}
				else
				{
					printf("NO\n");
					return 0;
				}
			default:
			;
		}		
	}
	if(s->elements[s->top]=='a')
	printf("OK\n"); 
}

C语言的数据结构每次用都需要定义并写相关函数,太过于麻烦,不如C++的直接封装

文章来源: zstar.blog.csdn.net,作者:zstar-_,版权归原作者所有,如需转载,请联系作者。

原文链接:zstar.blog.csdn.net/article/details/111702834

【版权声明】本文为华为云社区用户转载文章,如果您发现本社区中有涉嫌抄袭的内容,欢迎发送邮件进行举报,并提供相关证据,一经查实,本社区将立刻删除涉嫌侵权内容,举报邮箱: cloudbbs@huaweicloud.com
  • 点赞
  • 收藏
  • 关注作者

评论(0

0/1000
抱歉,系统识别当前为高风险访问,暂不支持该操作

全部回复

上滑加载中

设置昵称

在此一键设置昵称,即可参与社区互动!

*长度不超过10个汉字或20个英文字符,设置后3个月内不可修改。

*长度不超过10个汉字或20个英文字符,设置后3个月内不可修改。