⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 stack.h

📁 此源码配合数据结构(C++)严蔚敏版
💻 H
字号:
//stack.h的代码//头文件部分
//函数结果状态代码 
#include"stdio.h"
#include "stdlib.h"

#define TRUE 1
#define FALSE 0
#define OK   1
#define ERROR  0
#define INFEASIBLE -1
#define OVERFLOW -2
#define NULL 0
typedef int Status;//函数的类型,其值是函数结果状态代码
typedef BiTree SElemType;//????

#define STACK_INIT_SIZE 100//存储空间的初始化分配量
#define STACKINCREMENT  10//存储空间的分配增量
typedef struct{
	SElemType *base;//在栈构造和销毁之后,base的值未NULL
	SElemType *top;//栈顶指针
	int stacksize;//当前分配的存储分量,一元素为 单位
}SqStack;
Status InitStack(SqStack &S){
	//构造一个空栈T
	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;
}//InitStack
Status GetTop(SqStack S,SElemType &e){
	//若栈不空则用e返回栈定元素,并返回ok,否则返回error
	if(S.top==S.base)return ERROR;
	e=*(S.top-1);
	return OK;
}//GetTop
Status Push(SqStack &S,SElemType e){
	//插入元素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;
	return OK;
}//Push
Status Pop(SqStack &S,SElemType &e){
	//若栈不空,则删除S的栈顶元素,用e返回其真值,并返回ok,否则返回error
	if(S.top==S.base)return ERROR;
	e=*--S.top;
	return OK;
}//Pop
int StackEmpty(SqStack S)
//判断栈S是否为空,若为空,则返回1,否则返回0
{
	if(S.top==S.base) return 1;
	else          return 0;
}
int StackLength(SqStack S)
//求栈的元素个数
{
	return S.top-S.base;
}

Status ClearStack(SqStack &S)
//清空栈中的元素
{
	
	S.top=S.base;
	return OK;
}


⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -