括号匹配

#include<stdio.h>
#include<stdlib.h>
#include<string.h>
typedef char DataType ;
#define Stack_Size 100          //栈长


typedef struct                   //栈的结构体
{  
DataType *base;
DataType *top;
}SeqStack;


void Init(SeqStack *s)    //初始化栈
{
s->base = (DataType *)malloc(Stack_Size*sizeof(DataType));
if(!s->base)
{
printf("分配内存失败!\n");
exit(0);
}
    s->top=s->base;
}


int IsEmpty(SeqStack *s)   //栈空,返回1;反之,返回0;
{
return s->top==s->base;
}
int IsFull(SeqStack *s)     //栈满,返回1;反之,返回0;
{
return s->top-s->base == Stack_Size;
}
void push(SeqStack *s , DataType ch)
{
if(IsFull(s))
{
printf("栈满!\n");
exit(0);
}
else
*s->top++ = ch;
}


DataType pop (SeqStack *s)
{
if(IsEmpty(s))
{
printf("栈空!\n");
exit(0);
}
else
return *--s->top ;
}


void main()
{
char c[20];
char ch;
char *p=c;
SeqStack s;
Init(&s);
printf("请输入含括号的的表达式:\n");
    gets(c);
while(*p)
{
switch(*p)
{
case '{':
case '[':
case '(': 
push(&s,*p++); break;
case ')':
case ']':
case '}':
ch=pop(&s);
if((ch=='(' && *p== ')')||(ch=='[' && *p== ']')||(ch=='{' && *p== '}'))
p++;
else
{
printf("括号不匹配!\n");
exit(0);
}
break;
default:p++;


}
}
if(IsEmpty(&s))
printf("括号匹配成功!\n");
else
printf("括号不匹配!\n");
}
发布了54 篇原创文章 · 获赞 3 · 访问量 2万+
展开阅读全文

没有更多推荐了,返回首页

©️2019 CSDN 皮肤主题: 大白 设计师: CSDN官方博客

分享到微信朋友圈

×

扫一扫,手机浏览