链栈的基本操作
1. 链栈的结构定义
typedef struct StackNode
{
ElemType data;
struct StackNode* next;
}StackNode, *LinkStack;
2. 链栈的初始化
bool InitLinkStack(LinkStack &S)
{
S = NULL;
return success;
}
3. 判断链栈是否为空
bool isEmpty(LinkStack &S)
{
if(!S)
return true;
else return false;
}
4. 向链栈插入新栈顶元素
bool Push(LinkStack &top, ElemType e)
{
StackNode* p = (StackNode*) malloc(sizeof(struct StackNode));
if(!p)
{
free(p);
return failed;
}
p->data = e;
p->next = top;
top = p;
return success;
}
5. 访问栈顶元素
StackNode* GetTop(LinkStack& top)
{
return top;
}
6. 弹出栈顶元素
bool Pop(LinkStack &top)
{
if(!top)return failed;
StackNode* p = top;
top = top->next;
free(p);
return success;
}
7. 从栈顶开始遍历链栈
void LinkStackTraverse(LinkStack top)
{
StackNode* p = top;
while(p)
{
printf("%d\n", p->data);
p = p->next;
}
}