链栈的表示
链栈是运算受限的单链表,只能在链表头部进行操作
指针域:存元素地址
数据域:存元素
(链栈初始化)
(判断是否为空)
(链栈入栈)
(链栈出栈)
(取栈顶元素)
typedef struct StackNode
{
SElemType data;
struct StackNode* next;
}StackNode, *LinkStack;
LinkStack S;
//链栈初始化
void InitStack(LinkStack &S)
{
//构造一个空栈,栈顶指针置为空
S=NULL;
return OK;
}
//判断链栈是否为空
Status StackEmpty(LinkStack S)
{
if(S=NULL)
return TRUE;
else
return FALSE;
}
//入栈
Status Push(LinkStack &S,SElemType e)
{
P = (LinkStack*)malloca(size(LinkStack StackNode));//生成新的结点
p->data=e;//将新结点数据域置为e
p->next=S;//将新结点插入栈顶
S=p;//修改栈顶指针
return OK;
}
//链栈的出栈
Status Pop(LinkStack &S,SElemType &e)
{
if(S==NULL)
return ERROR;
e = S-> data;
p = S;
S = S-> next;
free(P);//释放sensor对应的动态内存空间
return OK;
}
//取出栈顶元素
SElem Type GetTop(LinkStack S)
{
if(S!=NULL)
return S->data;
}