#include<stdio.h>
#include<stdlib.h>
typedef struct LNode{
char data;
struct LNode *next;
}LNode,*SqStack;
//初始化栈
void InitSqStack(SqStack *L){
(*L) = (LNode *)malloc(sizeof(LNode));
(*L)->next = NULL;
}
//入栈
void push(SqStack *L,char e){
LNode *s = (LNode *)malloc(sizeof(LNode));
s->data = e;
s->next = (*L)->next;
(*L)->next = s;
}
//出栈
int pop(SqStack *L,char *e){
if((*L)->next==NULL)
return 0;
LNode *p = (*L)->next;
*e = p->data;
(*L)->next = (*L)->next->next;
free(p);
return 1;
}
//判断栈空
int isEmpty(SqStack L){
if(L->next==NULL)
return 1;
return 0;
}
//括号匹配
int brackCheck(char arr[],int length){
SqStack L;
InitSqStack(&L);
int i;
char c;
for(i=0;i<length;i++){
//遇到左括号
if(arr[i]=='{'||arr[i]=='['||arr[i]=='(')
push(&L,arr[i]);
else{ //遇到右括号
if(isEmpty(L))
return 0;
pop(&L,&c);
if(arr[i]=='}'&&c!='{')
return 0;
if(arr[i]==']'&&c!='[')
return 0;
if(arr[i]==')'&&c!='(')
return 0;
}
}
return isEmpty(L);
}
int main(){
char arr[] = {'[','{','(',')','}',']'};
int length = sizeof(arr)/1;
int temp = brackCheck(arr,length);
if(temp==1)
puts("匹配成功");
else
puts("匹配失败");
return 1;
}
数据结构第三章--栈实现括号匹配完整算法
最新推荐文章于 2022-03-26 17:08:02 发布