目录
栈的定义和特点
定义:栈(Stack)是一个特殊的线性表,是限定仅在一端(通常是表尾)进行插入和删除操作的线性表。
又称后进先出(Last In First Out)的线性表,简称LIFO结构。
逻辑结构:与线性表相同,仍为一对一关系。
存储结构:用顺序栈和链栈存储均可,但以顺序栈更常见。
运算规则:只能在栈顶运算,且访问节点时仍依照后进先出的原则。
预定义
#include<iostream>
#include<cstdio>
#include<cstdlib>
#define MaxSize 100
#define Ok 1
#define Error 0
#define OverFlow -2
using namespace std;
typedef int Status;
typedef int SElemType;
typedef struct{
SElemType *top; //栈顶指针
SElemType *base; //栈底指针
int stacksize; //栈可用最大容量
}SqStack;
SqStack S,T;
初始化
//初始化
Status InitStack(SqStack &S){
S.base = (SElemType*)malloc(sizeof(SElemType) * MaxSize);
if(!S.base)
exit(OverFlow); //存储分配失败
S.top = S.base; //栈顶指针等于栈底指针
S.stacksize = MaxSize;
return Ok;
}
判断栈是否为空
//判断栈是否为空
Status StackEmpty(SqStack S){
if(S.top == S.base)
return Ok;
else
return Error;
}
求顺序栈的长度
//求顺序栈的长度
int StackLength(SqStack S){
return S.top - S.base;
}
清空顺序栈
//清空顺序栈
Status ClearStack(SqStack &S){
if(S.base)
S.top = S.base;
return Ok;
}