//定义栈的结点数据结构
typedef sturct LinkNode
{
ElemType data;
struct LinkNode *next;
}LinkStNode;
//初始化栈
void InitStack(LinkStNode *&L)
{
L = (LinkStNode *)malloc(sizeof(LinkStNode));
L->next = NULL;
}
//销毁一个带头结点的栈
void DestroyStack(LinkStNode &L)
{
LinkStNode *p;
p = L;
while(p!=NULL)
{
L= L->next;
free(P);
p = L;
}
}
//销毁一个栈李春葆版
void DestroyStrack(LinkStNode &L)
{
LinkStNode *pre = L,*p = pre ->next;
while(p!=NULL)
{
free(pre);
pre = p;
p = p->next;
}
free(pre);
}
//判断带头结点的链栈为空
bool StackEmpty(LinkStNode &L)
{
return (L->next ==NULL);
}
//带头结点的进栈操作
void PushStack(LinkStNode &L,ElemType e)
{
LinkStNode *s = (LinkStNode *)malloc(sizeof(LinkStNode));
s->data = e;
s->next = L->next;
L->next = s;
}
//带头结点的出栈操作
bool PopStack(LinkStNode &L,ElemType e)
{
if(L->next ==NULL)
return false;
LinkStNode *t;
t = L->next;
e= t->data;
L - >next = t->next;
free(t);
return true;
}
//取栈顶结点
LinkStNode GetTopPoint(LinkStNode L)
{
if(L->next == NULL)
return false;
return (L->next);
}
//取栈顶元素
LinkStNode GetTopValue(LinkStNode L,ElemType e)
{
if(L->next == NULL)
return false;
e = L->next->data;
return e;
}
学习c++带头结点的栈的链式存储(王道数据结构栈的链式存储)
于 2022-04-29 10:39:43 首次发布