全局变量
- gl_Top:栈顶指针
- gl_Bottom:栈底指针
- gl_stackSize:栈高度
- gl_maxSize:最大栈高度
函数
- initStack(int maxSize):初始化栈
- push(int value):压栈
- pop():出栈
- getTopValue():获取栈顶元素值
- getStackSize():获取栈高度
源文件代码
#include <stdlib.h> #include <stdio.h> #include "MyStack.h"
StackNode* gl_Top; StackNode* gl_Bottom; int gl_stackSize = 0; int gl_maxSize = 0;
void initStack(int maxSize) {
while (gl_stackSize>0) {
pop();
}
gl_err_stack = 0;
gl_maxSize = maxSize;
} void push(int value) {
if (gl_stackSize >= gl_maxSize)
return;
StackNode* newNode = (StackNode*)malloc(sizeof(StackNode));
newNode->value = value;
if (gl_stackSize == 0) {
gl_Bottom = newNode;
gl_Top = newNode;
newNode->down = newNode;
gl_stackSize++;
return;
}
gl_Top->up = newNode;
newNode->down = gl_Top;
gl_Top = newNode;
gl_stackSize++;
} void pop() {
if (gl_stackSize <= 0)
return;
if (gl_stackSize == 1) {
free(gl_Top);
gl_Top = gl_Bottom = NULL;
gl_stackSize = 0;
return;
}
gl_Top = gl_Top->down;
free(gl_Top->up);
gl_stackSize--;
} int getTopValue() {
return gl_Top->value;
} int getStackSize() {
return gl_stackSize;
}
头文件代码
typedef struct StackNode{ int value; struct StackNode* up; struct StackNode* down; }StackNode;
- void initStack(int maxSize);
- void push(int value);
- void pop();
- int getTopValue();
- int getStackSize();