顺序栈的操作
#include<stdio.h>
#include<malloc.h>
#include<stdlib.h>
#define MAXSIZE 100
typedef int SElemType;
typedef struct SqStack {
SElemType* base;//栈底指针
SElemType* top;//栈顶指针
int stacksize;//栈可用最大容量
}SqStack;
/*
栈的初始化
*/
void InitStack(SqStack& S) {
S.base = (SElemType*)malloc(sizeof(SElemType) * MAXSIZE);
if (!S.base)exit(-1);
S.top = S.base;
S.stacksize = MAXSIZE;
}
/*
判断顺序栈是否为空
*/
bool StackEmpty(SqStack S) {
if (S.base == S.top)
{
return true;
}
else {
return false;
}
}
/*
求顺序栈长度
*/
int StackLength(SqStack S) {
return S.top - S.base;
}
/*
清空顺序栈
*/
int ClearSqStack(SqStack& S) {
if (S.base)
{
S.top = S.base;
}
return 1;
}
/*
销毁顺序栈
*/
int DestroyStack(SqStack& S) {
if (S.base)
{
free(S.base);
S.stacksize = 0;
S.base = S.top = NULL;
}
return 1;
}
/*
顺序栈的入栈
*/
int Push(SqStack& S, SElemType e) {
if (S.top - S.base == S.stacksize)return -1;//栈满
*S.top = e;
S.top++;
return 1;
}
/*
顺序栈的出栈
*/
int Pop(SqStack& S, SElemType& e) {
if (S.base == S.top) return -1;
e = *S.top;
S.top--;
return 1;
}
int main() {
return 0;
}
我亦无他,惟手熟尔