#结构#在本篇文章中,作者将与大家一起来了解数据结构中的链栈,以及它的一些相关操作。
链栈,顾名思义就是使用线性链表去实现一个栈,所以链栈的实现原理其实与我们之前学习的线性链表的实现是极其相似的。
在之前学习的线性链表中,我们已经学习了如何插入或者删除一个元素,那么链栈中的入栈和出栈操作其实就是增加了一个限定,限定只能在表头添加或删除元素。
接下来,我们就一起来看看如何用代码实现一个链栈以及它的相关操作:
一,初始化(构造空栈):
typedefstructNode
{
intdata;
structNode*next;
}stacknode,*linkstack;
typedefstructstack{
linkstacktop;
}Linkstack;
boolInitStack(Linkstack*S)
{
S-top=(linkstack)malloc(sizeof(stacknode));
S-top=NULL;
returntrue;
}
二,入栈:
boolpush(Linkstack*S,inte)
{
linkstacks=(linkstack)malloc(sizeof(stacknode));
s-data=e;
s-next=S-top; //新插入结点的next指针指向栈顶
S-top=s; //新结点s变成了栈顶
returntrue;
}
三,出栈:
boolpop(Linkstack*s,int*e)
{
linkstackp;
*e=s-top-data;//将栈顶元素赋值给e
p=s-top; //将栈顶指针给p
s-top=p-next; //后移栈顶指针
free(p); //释放p结点
returntrue;
}
本篇文章到此就结束了,欢迎大家