//s.a[s.top] 这东东是栈顶元素
void init(Sqstack *s); // 声明 初始化栈 函数
Elem pop(Sqstack *s); //声明 取栈顶元素函数
void push(Sqstack *s, Elem e); //声明 出栈函数
void init(Sqstack *s)
{
s->top = -1;
}
void push(Sqstack *s, Elem e)
{
if (s->top == MAX - 1) //判断是否为满栈
printf("stack full");
else
{
s->top++;
s->a[s->top] = e; //让元素e 进栈
}
}
Elem pop(Sqstack *s)
{
Elem x;
if (s->top == -1) // 判断是否为空栈
{
printf("stack underflow");
}
else
{
x = s->a[s->top]; //把栈顶元素赋值给 变量x
s->top--; // 让栈顶元素出栈
return x; // 函数最终返回刚刚取出的栈顶元素值
}
}
int main()
{
Sqstack s;
init(&s);
int j;
char ch;
Elem e, x;
Sqstack s1;
printf("please input the char,such as {{{【【【()】】】}}}");
printf("括号序列如下:\n");
do
{
ch = getchar();
printf("%c ", ch);
switch (ch)
{
case '(': push(&s, ch); break;
case '[': push(&s, ch); break;
case '{': push(&s, ch); break;
case ')': { if (s.a[s.top] == '(') //判断栈顶元素是否为字符 '('