资源简介

问题描述 表达式中可能出现花括号{}、方括号[]、园括号(),从键盘输入一个表达式,检查左右括号配对情况,并输出结果。 例子:{[(…)(…)]…(…)}配对 而{[(…)(…)]…[(]…)}不配对 二、实验目的 掌握栈的存储与操作。 三、实验内容及要求 1、构造栈的数据结构。 2、实现栈的创建、查找、遍历、输出、入栈、出栈等操作。

资源截图

代码片段和文件信息



#include
#include
#include
#define stack_init_size 10
#define stack_grow_size 5
#define elemtype char
#define ok 1
#define error 0
typedef struct { /*建立一个栈的首结点*/
    elemtype * base;
    elemtype * top;
    int stacksize;
} spstack;
int InitStack(spstack *s) { /*建立空的栈并返回首地址*/
    s->base=((elemtype*)malloc(stack_init_size*sizeof(elemtype)));
    if (!s->base) return error;
    s->top=s->base;
    s->stacksize=stack_init_size;
    return ok;
}
int StackEmpty(spstack *s) { /*判断栈是否为空*/
    if (s->top==s->base) return ok;
    else                 return error;
}
int Push(spstack *selemtype e) { /*往栈顶插入元素即进栈*/
    if (s->top-s->base>=s->stacksize) { /*判断是否栈满*/
        s->base=((elemtype*)realloc(s->base(s->stacksize+stack_grow_size)*sizeof(elemtype)));
        if (!s->base) return error;
        s->stacksize+=stack_grow_size;
        s->top=s->base+s->stacksize;
    }
    *s->top++=e;
    return ok;
}
int Pop(spstack *selemtype *e) { /*让栈顶元素依次输出即出栈*/
    if (StackEmpty(s)) return error;
    *e=*(--s->top);
    return ok;
}
int Comp

评论

共有 条评论