关于栈的一个问题

来源:百度知道 编辑:UC知道 时间:2024/05/17 23:27:11
哪位大侠能帮我看一下下面的程序啊,我的目的是进行括号匹配的检验~~但是运行的时候什么什么该内存不能为“written”…… 郁闷死了,帮帮忙啊……我加分!!

#include <stdio.h>

#define MaxSize 100
typedef char ElemType;
typedef struct
{
ElemType data[MaxSize];
int top;
}STACK; //定义栈

//初始化栈
void InitStack(STACK *s)
{
s->top=-1;
}

//入栈
void Push(STACK *s,ElemType x)
{
if (s->top==MaxSize-1)
{
printf("\nStack is full!");
}
s->top++;
s->data[s->top]=x;
}

//判断顺序栈是否为空
int Empty(STACK *s)
{
return(s->top==-1?1:0);
}

//删除栈顶元素
Pop(STACK *s)
{
if (Empty(s))
{
printf("\nStack is free!");
return 0;
}
s->top--;
}

//取栈顶元素
GetTop(STACK *s)
{
ElemType x;
if (Empty(s))
{
printf("\nStack is free!");
retu

===============================================
这位大哥说的问题我自己都发现了,也都改成了目前的这个样子,但是当我输入一个]的时候,栈还是空的,还是会输出匹配的结果啊~~那这个怎么改~
===============================================
这个家一个判断就好了,也就是说如果有右括号,不存在左括号的话(也就是栈空),直接报错,具体的加的代码见后面的程序。

你的代码问题不少,看来这100分不好拿啊,
都帮你改好了,具体的看一下注释,改的还都是main函数中的:

#include <string.h>

#define MaxSize 100
typedef char ElemType;
typedef struct
{
ElemType data[MaxSize];
int top;
}STACK; //定义栈

//初始化栈
void InitStack(STACK *s)
{
s->top=-1;
}

//入栈
void Push(STACK *s,ElemType x)
{
if (s->top==MaxSize-1)
{
printf("\nStack is full!");
}
s->top++;
s->data[s->top]=x;
}

//判断顺序栈是否为空
int Empty(STACK *s)
{
return(s->top==-1?1:0);
}

//删除栈顶元素
Pop(STACK *s)
{
if (Empty(s))
{