马上注册,结交更多好友,享用更多功能^_^
您需要 登录 才可以下载或查看,没有账号?立即注册
x
本帖最后由 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),显示报错信息并反回。 |