#include "线性表_单链表.h"
typedef SElemType ElemType;//栈结点类型和链表结点类型一致
typedef LinkList LinkStack;//ListStack是指向栈结点的指针类型
#define InitStack InitList //InitStack()与InitList()作用相同,下同
#define DestroyStack DestroyList
#define ClearStack ClearList
#define StackEmpty ListEmpty
#define StackLength ListLength
Status GetTop(LinkStack S, SElemType &e)
{
//若栈不空,则用e返回S的栈顶元素,并返回OK;否则返回ERROR
return GetElem(S, 1, e);
}
Status Push(LinkStack S, SElemType e)
{
//插入元素e为新的栈顶元素
return ListInsert(S, 1, e);
}
Status Pop(LinkStack &S, SElemType &e)
{
//若栈不空,则删除S的栈顶元素,用e返回其值,并返回OK;否则返回ERROR
return ListDelete(S, 1, e);
}
void StackTraverse(LinkStack S, void(*visit)(SElemType))
{
//从栈底到栈顶依次对栈中每个元素调用函数visit()
LinkStack temp, p = S;//p指向栈顶元素
InitStack(temp);//初始化临时栈temp
while (p)
{
Push(temp, p->data);//由S栈顶到栈底,依次将栈元素入栈到temp栈
p = p->next;
}
ListTraverse(temp, visit);//遍历temp线性表
}
8.数据结构 链栈
最新推荐文章于 2023-11-11 00:10:14 发布