c++/c 栈_m0_63749236的博客-爱代码爱编程
2022/9/22
栈(线性表、):
初始化:构造空栈、
销毁:栈存在
判空:栈存在、base==top;
置空:栈存在且非空
进栈;栈存在
出栈:栈存在且非空
栈顶元素:栈存在且非空
栈长:栈存在
存储结构:顺序结构
栈满:top-base == stacksize;
1)构造
//构造
#define MAXSIZE 50
typedef struct {
int* top;
int* base;
int stacksize;
}sqStack;
2)初始化
int InitStack(sqStack &s) {
//s.base = (int*)malloc(MAXSIZE * sizeof(int)); c语言写法
s.base = new int[MAXSIZE];
if (!s.base)exit;
s.base = s.top;
s.stacksize = MAXSIZE;
}
3)判空
bool judgeNull(sqStack& s) {
if (s.base == s.top) {
return true;
}
else {
return false;
}
}
4)求栈长
int stacklength(sqStack& s) {
return s.top - s.base;
}
5)清空栈
void clearStack(sqStack& s) {
if (s.base)s.base = s.top;
}
6)销毁栈
void destroy_rstack(sqStack& s) {
if (s.base) {
delete s.base;
s.stacksize = 0;
s.base = s.top = NULL;
}
}
7)进栈
int Push(sqStack& s,int e) {
if (s.top - s.base == s.stacksize)return -1;
//*s.top = e;
//s.top++;
*s.top++ = e;
}
8)出栈
int pop(sqStack& s, int &e) {
if (s.base == s.top)return 0;
//--s.top;
//e = *s.top;
e = *--s.top;
return e;
}