//定义栈结点的数据结构
typedef struct LinkStNode
{
ElemType data;
struct LinkStNode *next;
}LinkStNode;//c++不取别名也没啥大问题
//初始化不带头结点的链栈
void InitLinkStack(LinkStNode *&L)
{
L = NULL://头指针
}
//销毁不带头结点的链栈 销毁单链表一样的
bool DestroyLinkStack(LinkStNode &L)
{
if(L =NULL)
return false;
LinkStNode *p = L;
while(p!=NULL)
{
L = L ->next;
free(p);
p = L;
}
return true;
}
//不带头结点的栈的判空
bool EmptyStack(LinkStNoed *&L)
{
return (L==NULL);
}
//不带头结点的进栈操作
void PushStack(LinkStNode &L,ELemType e)
{
LinkStNode *S = (LinkStNode *)malloc(sizeof(LinkStNode));
s->data = e;
if(L==NULL)
{
L = s;
}
else
{
s->next = L;
L = s;
}
}
//不带头结点的出栈操作
bool PopStack(LinkStNode &L,ElemType e)
{
if(L==NULL)
return false;
LinsStNode *t;
t = L;
e = t->data;
L = t->next;
free(t);
return true;
}
|