/*
// 根据下面的结构体定义与声明实现给定的函数,不要修改函数声明
// ElemType 类型根据实际情况而定,
这里假设为 int typedef int ElemType;
// 链栈结构
typedef struct StackNode{
ElemType data;
struct StackNode *next;
} StackNode, *StackNodePtr;
typedef struct LinkStack {
StackNodePtr top;
int count;
} LinkStack, *LinkStackPtr;
// 构造一个空栈 S,成功返回 TRUE,失败返回 FALSE
Status initStack(LinkStackPtr S);
/**********************************************************************************
Name............:
Status push(LinkStackPtr S,ElemType e)
Description.....:
数据 e 压栈
Parameters......: S-指向 LinkStack 类型指针变量 e-压栈的数据
Return values...:
成功-return TRUE 失败-return FALSE
PreCondition....:调用 push 前,S 需要经过 initStack 初始化
PostCondition...:成功时,生成了一个存储 e 的新结点,数据 e 压入了 S 栈顶,栈 S 的长度 count 增 1,同时栈 S 的 top 指针指向新结点;失败时,栈 S 不改变 **********************************************************************************/
// 数据压栈,成功返回 TRUE,失败返回 FALSE
Status push(LinkStackPtr S, ElemType e);
// 数据弹栈,并赋值给 e,成功返回 TRUE,失败返回 FALSE
Status pop(LinkStackPtr S, ElemType *e);
// 栈的判空,若为空,返回 TRUE,否则返回 FALSE
Status isStackEmpty(LinkStackPtr S);
// 获取栈顶元素,并赋值给 e,成功返回 TRUE,失败返回 FALSE
Status getTop(LinkStackPtr S, ElemType *e);
// 销毁栈,成功返回 TRUE,失败返回 FALSE
Status destroyStack(LinkStackPtr S);
//利用上面的操作,实现一个算术表达值的求值。
(求值独立成一个函数,写在 test.c 中,带括号的中 缀表达式只包括加减,包括括号),比如: (1+(2-3)-(4+5))
*/
************************************************************************************************************************************************************************************************
栈作业.h
//将int类型定义为ElemType
typedef int ElemType;
//链栈结构
typedef struct StackNode {
ElemType data;
struct StackNode *next;
} StackNode, *StackNodePtr;
typedef struct LinkStack {
StackNodePtr top;
int count;
} LinkStack, *LinkStackPtr;
typedef enum Status
{
FLASE, TRUE
}Status;
// 构造一个空栈S,成功返回TRUE,失败返回FALSE
Status initStack(LinkStackPtr S);
/**********************************************************************************
Name............: Status push(LinkStackPtr S,ElemType e)
Descriptio