#include <stdio.h>
#include <stdlib.h>
#include <malloc.h>
#include <math.h>
//栈的初始最大容量
#define STACK_MAX_SIZE 100
//栈的容量增量
#define INCREAMENT 10
//状态函数
#define ERROR 0
#define OK 1
#define SOVERFLOW -1
#define YES 1
#define NO 0
typedef int Status,SElemType,ElemType;
typedef struct{
SElemType *base;
SElemType *top;
int stackSize;//当前已经分配的空间,不是指栈中元素个数。
}sqStack;
Status InitStack(sqStack &S){
//初始化栈空间,栈为空
S.base = (SElemType *)malloc(STACK_MAX_SIZE * sizeof(ElemType));
if(!S.base){
exit(SOVERFLOW);
}
S.top = S.base;
S.stackSize = STACK_MAX_SIZE;
return OK;
}
//如果栈不空,用e传出栈顶元素并返回OK。否则返回错误。
Status GetTop(sqStack S,SElemType &e){
if(S.top == S.base){
return ERROR;
}
e = *(S.top - 1);
return OK;
}
/*
* Push(S,e)向栈S中压入元素e。需要考虑的情况有:
* 1.栈已经满
【学习点滴-数据结构-栈&队列】 顺序栈的建立,入栈,出栈,判空
最新推荐文章于 2021-06-08 12:36:35 发布
这篇博客介绍了如何使用C语言实现顺序栈的数据结构,包括初始化栈、入栈(Push)、出栈(Pop)以及判断栈是否为空(isEmpty)的操作。博主通过示例代码展示了如何动态扩展栈的容量,并提供了完整的主要操作函数的实现。在主函数中,博主演示了将100个随机数入栈并打印,随后将栈中的所有元素依次出栈,展示顺序栈的实际应用。
摘要由CSDN通过智能技术生成