【算法入门必刷】数据结构-栈(一)

【牛客网面试入门必刷】算法入门-数据结构-栈(一)

📦个人主页:一二三o-0-O的博客
🏆技术方向:C/C++客户端资深工程师(直播+音视频剪辑)
👨‍💻作者简介:数据结构算法与音视频领域创作者
📒 系列专栏:牛客网面试必刷
📣专栏目标:帮助伙伴们通过系统训练,掌握数据结构与算法,收获心仪Offer
📝推荐一个找工作神器:牛客刷题网 【面试经验|实习招聘内推,求职就业一战解决】
🧡如果对您有帮助的话,欢迎点赞👍收藏📂,关注不迷路

【算法入门必刷】数据结构-栈篇系列文章:
【算法入门必刷】数据结构-栈(一)
【算法入门必刷】数据结构-栈(二)
【算法入门必刷】数据结构-栈(三)
【算法入门必刷】数据结构-栈(四)
【算法入门必刷】数据结构-栈(五)
【算法入门必刷】数据结构-栈(六)

前言

开启刷题,请点击右边链接进行跳转点击这里

在这里插入图片描述

算法入门刷题训练

题一:AB1 【模板】栈

题目分析

描述
请你实现一个栈。
操作:
push x:将 加x 入栈,保证 x 为 int 型整数。
pop:输出栈顶,并让栈顶出栈
top:输出栈顶,栈顶不出栈

根据题目描述是要实现一个栈,因此我们可以使用一个基础的容器来封装一个栈结构来实现栈的入栈,出栈以及返回栈顶元素的功能。这里选择使用基础容器数组:vector来封装一个栈结构。

理论准备

首先我们要掌握vector的一些基础操作:

添加操作
vector v;
v.push_back(1);//v = 1
v.emplace_back(2);//v = 1 2

删除操作
vector v{ 1,2,3,4,5 };
v.erase(v.begin());//删除1
v.erase(v.begin(),b.begin()+3);//删除1到3

题解

  1. 首先我们需要使用vector封装一个stack类

class stack{
vector v;
}

  1. 实现push方法:将要入栈的元素添加到vector容器中

void push(int x){
// 使用vector的添加方法
v.push_back(x);
}

  1. 实现pop方法:将栈顶的元素弹出

void pop(){
// 如果数组为空,输出报错
if(v.size() == 0){
cout << “error” << endl;
}else{
// 数组不为空,输出数组的最后一个元素
cout << v[v.size()-1] << endl;
// 输出后,将最后一个元素从容器中删除
v.erase(v.begin() + v.size()-1);
}
}

  1. 实现top方法:返回栈顶的元素

void top(){
// 如果数组为空,输出报错
if(v.size() == 0){
cout << “error” << endl;
}else{
// 数组不为空,返回数组的最后一个元素
cout << v[v.size()-1] << endl;
}
}

  1. 完整代码如下:
#include <iostream>
#include <vector>
using namespace std;

class stack{
    vector<int> v;
public:
	// push方法
    void push(int x){
        v.push_back(x);
    }  
    // pop方法
    void pop(){
        if(v.size() == 0){
            cout << "error" << endl;
        }else{
            cout << v[v.size()-1] << endl;
            v.erase(v.begin() + v.size()-1);
        }  
    }
    // top方法
    void top(){
        if(v.size() == 0){
            cout << "error" << endl;
        }else{
            cout << v[v.size()-1] << endl;
        }
    }
};

int main() {
    int n{};
    
    cin >> n;
    stack st;
    for(int i{};i<n;++i){
        string op;
        cin >> op;
        if(op == "push"){
            int x{};
            cin >> x;
            st.push(x);
        }else if(op == "pop"){
            st.pop();
        }else if(op == "top"){
            st.top();
        }
    }
    
    return 0;
}
// 64 位输出请用 printf("%lld")

当提交成功后,会展示如下界面,那么恭喜这道题目就通过了!
在这里插入图片描述

小结

祝愿所有的伙伴都能拿到自己心仪的Offer!📣伙伴们点击右边链接立刻开启刷题吧:牛客——刷题网

  • 43
    点赞
  • 27
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 70
    评论
作为一个程序员,算法数据结构是你须掌握的基本知识之一。它们是解决问题和优化代码性能的关键工具。 算法是一系列定义良好的步骤,用于解决特定问题或执行特定任务。它们可以是数学公式、逻辑推理或一系列编程指令。算法有助于解决各种问题,例如查找、排序、图形处理等。 数据结构是组织和存储数据的方式。它们可以是简单的变量、数组、链表、、队列、树或图等。选择合适的数据结构可以显著提高算法的效率和性能。 入门算法数据结构,你可以从以下几个方面开始学习: 1. 掌握基本的数据结构:了解数组、链表、和队列等基本数据结构的概念、特点及其操作。 2. 学习常见的算法:了解常见的排序算法(如冒泡排序、插入排序、快速排序)、查找算法(如线性查找、二分查找)以及递归算法等。 3. 理解复杂度分析:学习如何分析算法的时间复杂度和空间复杂度,了解如何评估算法的效率和性能。 4. 解决实际问题:通过练习和实践,尝试用算法数据结构解决一些实际的编程问题,例如字符串处理、图形处理等。 除了自学,你可以参考一些经典的教材和在线教程来加深理解。一些推荐的资源包括《算法导论》、《数据结构算法分析》、LeetCode等在线平台。 记住,算法数据结构是一个长期学习的过程,不仅需要理解概念,还需要实践和不断地思考如何应用它们解决实际问题。祝你在算法数据结构的学习中取得好成果!

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 70
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

一二三o-0-O

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值