顺序栈的操作

#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;
}
posted @ 2021-11-06 20:53  CharHao  阅读(55)  评论(0编辑  收藏  举报