括号匹配
2014-12-30 08:06
369 查看
#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");
}
#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");
}
相关文章推荐
- ACM括号匹配问题(java实现)
- 数据结构——括号匹配
- Generate Parentheses (括号匹配)【leetcode】
- 数据结构——括号匹配
- 第三章:顺序栈及其应用之二---括号匹配
- 括号匹配问题(Valid Parentheses)
- 栈应用之括号匹配
- 数据结构实验 第二单元 括号匹配
- 括号匹配问题
- 匹配括号的算法
- 括号匹配(一) 栈的应用
- C语言实现括号匹配问题
- <数据结构>栈的应用一:括号匹配检测
- poj 1068 括号匹配
- 【艾米莉娅】matrix:valid parentheses括号匹配代码分享(非堆栈版)
- 括号匹配判断
- NYOJ---002 括号匹配问题
- 括号的匹配方法
- 堆栈小应用(一):括号匹配程序
- 8、数据结构笔记之八栈的应用之括号匹配检验实现