- 1.定义
- 2.创建空栈
- 3.入栈操作
- 4.出栈操作
- 5.获取栈顶元素
- 6.判断栈是否为空
- 7.判断是否满栈
- 8.清空栈
- 9.销毁栈
- 10.获取栈的长度
#define TRUE 1
#define FALSE 0
#define OK 1
#define ERROR 0
#define INFEASIBLE -1
#define OVERFLOW -2
#define STACK_INIT_SIZE 100 //初始量
#define STACKINCREMENT 10 //增量
typedef int Status;
typedef int SElemType; //这里的元素类型设置为int
//类型定义
typedef struct{
SElemType *base;//设置栈底
SElemType *top;//设置栈顶
int stacksize;//当前栈大小
}SqStack;
2.创建空栈
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;
}
操作结果:创建一个空栈S3.入栈操作
Status Push(SqStack &S,SElemType e){//入栈操作
if(S.top - S.base >= S.stacksize){//判断栈的空间 进行分配
S.base = (SElemType *)realloc(S.base,(S.stacksize + STACKINCREMENT) * sizeof(SElemType));
if(!S.base){
exit(OVERFLOW);
}
S.top = S.base + S.stacksize; //重新设置栈顶
S.stacksize += STACKINCREMENT; //重新设置栈的大小
}
*S.top++ = e;
//等同于 *S.top = e; S.top++;
return OK;
}
操作结果:插入元素e作为新的栈顶元素4.出栈操作
Status Pop(SqStack &S,SElemType &e){//出栈操作
if(S.top == S.base){ //栈空
return ERROR;
}
e = *--S.top;
//相当于S.top--; e = S.top;
return OK;
}
操作结果:删除栈S的栈顶元素,并用e返回其值5.获取栈顶元素
Status GetTop(SqStack &S,SElemType &e){ //返回栈顶元素
if(S.top == S.base){ //栈空
return ERROR;
}
e = *(S.top-1);
return OK;
}
操作结果:用e返回栈S的栈顶元素6.判断栈是否为空
Status StackEmpty(SqStack S){// 判断是否为空栈
if(S.top == S.base){ //栈顶和栈底相同 即为空栈
return TRUE;
}
else
return FALSE;
}
操作结果:若栈空,返回TRUE值,否则返回FALSE7.判断是否满栈
Status StackFull(SqStack S){//判断是否为满栈
if(S.top - S.base == S.stacksize){
return TRUE;
}
else
return FALSE;
}
操作结果:若栈满,返回TRUE值,否则返回FALSE8.清空栈
Status ClearStack(SqStack &S){ //清空栈
S.top = S.base; //重新设置栈顶指针
return OK;
}
操作结果:将栈S的元素清空(改变指针)9.销毁栈
Status DestoryStack(SqStack &S){ //销毁栈
for(int i = 0;i
操作结果:将栈S销毁(释放空间)
10.获取栈的长度
int StackLength(SqStack S){ //获取栈的当前元素容量
return (S.top - S.base);
}
操作结果:返回栈S的当前长度
——————END——————
作者注:
刚开始写文章,能力有限,如果有错误部分,还请大家尽请指出。
有兴趣可以关注博主,以后还会持续更新内容哦~


![实现栈的基本操作 [链式存储] (创建 入栈 出栈 返回栈顶元素 获取长度 判空 判满 清空 销毁) C/C++ 数据结构 实现栈的基本操作 [链式存储] (创建 入栈 出栈 返回栈顶元素 获取长度 判空 判满 清空 销毁) C/C++ 数据结构](http://www.mshxw.com/aiimages/31/348340.png)
