#includestdio.h /* EOF(=AZ 或 F6),NULL */
#includestdlib.h /* atoi() */
#includestring.h
#includemalloc.h /* malloc() 等 */
#includeio.h /* eof() */
#includeprocess.h /* exit() */
/* 函数结果状态代码 */
#define TRUE 1
#define FALSE 0
#define OK 1
#define ERROR 0
#define INFEASIBLE -1
#define OVERFLOW -2
typedef int Status; /* Status 是函数的类型 ,其值是函数结果状态代码,如 OK 等 */
typedef int Boolean; /* Boolean 是布尔类型 ,其值是 TRUE 或 FALSE */
typedef int SElemType; // 定义栈元素类型
//栈的顺序存储表示
#define STACK_INIT_SIZE 12 //存储空间初始分配量
#define STACKINCREMENT 2 //存储空间分配增量
typedef struct{
SEIemType *base;〃栈底指针,在构造之前和销毁之后, base为NULL
SElemType *top;// 栈顶指针
int stacksize;//当前已分配的栈空间,以元素为单位
}SqStack;
// 栈的基本操作
Status InitStack(SqStack *S);// 构造一个新的栈
Status DestoryStack(SqStack *S);〃 销毁栈 S
Status ClearStack(SqStack *S);〃 把栈 S 置为空
Status StackEmpty(SqStack S);〃判断S是否为空,若为空,返回 TRUE,否则返回FALSE
int StackLength(SqStack S);〃返回S的元素个数,及栈的长度
Status GetTop(SqStack S,SEIemType *e);〃若栈不为空,用e返回S的栈顶元素,并返回TRUE, 否则返回 FALSE
Status Push(SqStack *S,SEIemType e);〃插入元素 e 为新的栈顶元素
Status Pop(SqStack *S,SEIemType *e);〃若栈不为空,则删除栈顶元素,并用 e返回其值,返
回 OK ,否则返回 ERROR
Status StackTraverse(SqStack S,Status(*visit)());// 从栈顶到栈底依次对栈中每个元素调用函数 visit(), 一旦调用 visit() 失败,则操作失败
Status visit(SEIemType c);
// 基本操作的算法描述
// 构造一个新的栈
Status InitStack(SqStack *S)
{
(*S).base=(SElemType *)malloc(STACK_INIT_SIZE * sizeof(SElemType)); if(!(*S).base) //存储分配失败
exit(OVERFLOW);
(*S).top=(*S).base;
(*S).stacksize=STACK_INIT_SIZE;
return OK;
}
// 销毁栈 S,S 不再存在
Status DestroyStack(SqStack *S)
{
free((*S).base);
(*S).base=NULL;
(*S).top=NULL;
(*S).stacksize=0;
return OK;
}
// 把 S 置为空栈
Status ClearStack(SqStack *S)
{
(*S).top=(*S).base;
return OK;
}
// 若栈 S 为空栈,则返回 TRUE ,否则返回 FALSE
Status StackEmpty(SqStack S)
{
if(S.top == S.base)
return TRUE;
else
return FALSE;
}
// 返回 S 的元素个数,即栈的长度
int StackLength(SqStack S)
{
return S.top-S.base;
}
// 若栈不为空,用 e返回S的栈顶元素,并返回 TRUE,否则返回FALSE
Status GetTop(SqStack S,SElemType *e)
{
if(S.top==S.base)return ERROR;
*e = *(S.top-1);
retur
您可能关注的文档
- 标韩一册语法总结、称谓、结构.docx
- 标题】汽车货物运输规则.docx
- 标高测量记录.docx
- 栈桥施工安全培训.docx
- 栈和队列实验报告.docx
- 栈桥设计说明.docx
- 栉风沐雨勇攀新高峰---车间职代会报告.docx
- 栈的应用举例.docx
- 栏杆扶手安装合同.docx
- 树型金银花标准化高效有机栽培技术研究与示范.docx
- 中航期货-铜月报-2026年2月.pdf
- 欧洲央行-资本缓冲能力的结构模型.pdf
- 国金证券-计算机行业专题研究报告-消费电子3D打印迎加速契机.pdf
- 民航局机场司现行有效文件目录.pdf
- 华西证券-钠电池行业专题报告-技术成熟+应用领域清晰,钠电池有望迎来放量.pdf
- 华鑫证券-传媒行业周报-传媒回调行情仍在,智能新纪元撬动注意力经济.pdf
- 国金证券-石油化工行业研究-美以对伊朗军事行动爆发.pdf
- 西部证券-建筑建材行业周报-中国化学重点推荐关注减碳技术服务商.pdf
- 欧洲电力行业联盟-Eurelectric对ENTSO-E 2025年欧洲资源充足性评估咨询的回应(英).pdf
- 欧洲银行体系中的风险传播:非银行金融机构和市场风险的放大效应-2026.pdf
最近下载
- 托育服务中心项目计划书.pptx VIP
- DL_T 596-2021 电力设备预防性试验规程.docx VIP
- 铝材厂跟单员培训课件.pptx VIP
- 2026年湖南电气职业技术学院单招职业技能考试题库附答案详解(培优).docx VIP
- (高清版)B-T 41261-2022 过程工业报警系统管理.pdf VIP
- 室间质评不合格原因分析及纠正记录表(2026版-).docx VIP
- GB 50870-2013 建筑施工安全技术统一规范.docx VIP
- 青少年户外营地(露营)教育教学课件:营地概论.pptx VIP
- 国家基本公共卫生中医药服务培训.ppt VIP
- 2021年磁粉检测高级证模拟实操试题-能中能.docx VIP
原创力文档

文档评论(0)