学习笔记3——栈(C++版)

 接下来教大家如何实现一个栈,我们采用单链表的形式。其实说白了就是给单链表写个入栈和出栈的函数就好了。和上一篇文章说的一样,这里说的栈和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容器即可。

  • 4
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值