接下来教大家如何实现一个栈,我们采用单链表的形式。其实说白了就是给单链表写个入栈和出栈的函数就好了。和上一篇文章说的一样,这里说的栈和stack容器是不一样的。
如何实现栈
1.定义链表节点
struct StackNode{
DataType val;
ListNode *next;
ListNode(DataType x):val(x), next(nullptr){}
};
2.创建栈的结构体
struct Stack
{
ListNode* top = nullptr;
size = 0;
};
3.检查是否为空
bool isEmpty(){
return top==nullptr;
}
4.编写入栈函数
void push(DataType x)
{
StackNode* q = new StackNode(x);
q->next = top;
top = q;
}
//由此可见,栈顶是链表首元素
5.编写弹栈函数
DataType pop(){
if(isEmpty()){
throw std::out_of_range("Stack is empyty");
}
DataType value = top->val;
top = top->next;
return value;
}
至此,我们已经弄懂了栈的原理了,而关于栈的使用,只需要学会STL库中的stack容器即可。
标签:ListNode,DataType,top,nullptr,笔记,next,学习,C++,StackNode From: https://blog.csdn.net/weixin_52133252/article/details/141640010