栈和队列基操
一、栈
1.顺序栈
数据定义
//顺序栈数据结构
typedef struct SNode{
int *top;//栈顶指针
int *base;//栈底指针
int stackSize;//栈空间大小
int size; //元素个数
}SNode,*LinkStack;
初始化
//栈初始化
void init(LinkStack &l){
l=new SNode;
l->stackSize=100;
l->base=l->top=new int[100];
l->size=0;
}
入栈
//入栈 --- 默认栈不满
void push(LinkStack l,int e){
*l->top=e;
l->top++;
l->size++;
}
出栈
//出栈 --- 默认栈非空
int pop(LinkStack l){
l->top--;
l->size--;
return *l->top;
}
取栈顶
//取栈顶元素
int getHead(LinkStack l){
return *l->top;
}
求栈长
//栈长
int length(LinkStack l){
return l->size;
}
判空
//判空
bool IsEmpty(LinkStack l){
return l->base==l->top;
//return l->size==0;
}
清空
//清空
void clear(LinkStack l){
l->top=l->base;
l->size=0;
}
销毁
//销毁
void destory(LinkStack &l){
delete l;
init(l);
}