带链栈
本帖最后由 qq1242009750 于 2017-12-19 16:48 编辑首先我们来定义一些结构和宏:
①带链栈节点:
struct StackLink
{
SNode *top;
SNode *base;
int Count;
int StackSize;
};
②带链栈结构:
struct SNode
{
int data;
SNode *Next;
};
③以及我们的一些宏:
#define INIT_STACK_SIZE 100 //初始化容量
#define INCREMENT 100 //增容
操作:
①初始化: 把栈顶和栈底赋为NULL,计数器置零。
②入栈:
1)当栈为空时(计数器 == 0||base = top = NULL),先创建一个节点,此节点的Next指向top(此节点的Next=NULL),然后把top和base指向此节点,计数器加1。
2)当栈不为空且不满时(Count < StackSize && base != top != NULL),先创建一个节点,此节点的Next指向top,然后把top指向此节点,计数器加1。
3)当栈满时先增容,后创建一个节点,此节点的Next指向top,然后把top指向此节点,计数器加1。
③出栈:
1)当栈不为空时(Count != 0 && base != top != NULL),创建一个临时指针变量,保存top->Next的地址,取出内容后删除top,再把top指针指向临时指针。
2)当栈为空时(base == top == NULL),显示报错信息并反回。
页:
[1]