一、顺序栈基本函数
#include<stdio.h>
#include<stdlib.h>
#include<malloc.h>
#include<string.h>
#define max 50
typedef char Datatype;
typedef struct s
{
Datatype* data;
int top;
}Stack;
Stack* InitStack()
{
Stack* s=(Stack*)malloc(sizeof(Stack));
s->data=(Datatype*)malloc(sizeof(Datatype)*max);
s->top=-1;
return s;
}
void push(Stack* s,Datatype da)
{
if(s->top==max-1)
{
return;
}
s->data[++s->top]=da;
}
void pop(Stack* s)
{
if(s->top==-1)
{
return;
}
s->top--;
}
int IsEmpty(Stack* s)
{
return s->top==-1;
}
括号匹配函数
void fun()
{
int i=0;
Stack* s=InitStack();
char arr[100];
printf("请输入一系列括号(英文状态下):");
scanf("%s",arr);
while(arr[i]!='\0')
{
if(arr[i]=='('||arr[i]=='['||arr[i]=='{')
{
i++;
}
else
{
if(s->data[s->top]=='('&&arr[i]==')'||s->data[s->top]=='['&&arr[i]==']'||s->data[s->top]=='{'&&arr[i]=='}')
{
pop(s);
}
i++;
}
}
if(IsEmpty(s))
{
printf("匹配成功\n");
}
else
{
printf("匹配失败\n");
}
}