用C语言实现链栈的基本操作

/*

// 根据下面的结构体定义与声明实现给定的函数,不要修改函数声明
// 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
  • 3
    点赞
  • 15
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值