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

2022-06-14 09:32:36 浏览数 (1)

程序设计基础课大作业1

代码语言:javascript复制
#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] = "";
	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("NOn");
					return 0;
				}
			case']':
				if(s->elements[s->top]=='[')
				{
					s->top--;
					break;
				}
				else
				{
					printf("NOn");
					return 0;
				}
			case')':
				if(s->elements[s->top] == '(')
				{
					s->top--;
					break;
				}
				else
				{
					printf("NOn");
					return 0;
				}
			default:
			;
		}		
	}
	if(s->elements[s->top]=='a')
	printf("OKn"); 
}

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

0 人点赞