当前位置: 首页 > article >正文

数据结构漫游记:初识栈(stack)

嘿,各位技术潮人!好久不见甚是想念。生活就像一场奇妙冒险,而编程就是那把超酷的万能钥匙。此刻,阳光洒在键盘上,灵感在指尖跳跃,让我们抛开一切束缚,给平淡日子加点料,注入满满的passion。准备好和我一起冲进代码的奇幻宇宙了吗?Let's go!

我的博客:yuanManGan

我的专栏:C++入门小馆 C言雅韵集 数据结构漫游记  闲言碎语小记坊 题山采玉

目录

栈的认识

静态模拟实现栈

创建栈

入栈

出栈

查询栈顶元素

查询栈帧元素个数

判空

代码测试

stack


栈的认识

栈是一个访问受限线性表,它只允许从上端插入上端删除。类似于枪的弹夹。先来认识一下栈中的名词吧。

空栈:顾名思义,栈里面没有元素。

栈顶元素:在栈最上面的元素。

出栈,入栈:在栈顶上进行增加和删除。

静态模拟实现栈

在了解了静态实现顺序表之后来实现栈应该是很轻松的。

就来简单模拟一下吧!

创建栈

我们用一个很大的数组来存储栈里面的元素,同样的在下标为0 的位置不存储任何信息,用n来记录栈中元素的个数。

int st[N];
int n;

入栈

将n+1然后再这个下标处存储入栈元素

void push(int x)
{
    st[++n] = x;
}

出栈

该功能特别简单只需要n--即可,有人问为什么不将n下标位置的数据清空呢,我们只访问n之前的元素,根本不会访问到那个已经删除的元素。

void pop()
{
    n--;
}

查询栈顶元素

int top()
{
    return st[n];
}

查询栈帧元素个数

int size()
{
    return n;
}

判空

bool empty()
{
    return n == 0;
}

代码测试

stack

stack是C++STL库里面的一个容器,可以实现栈。

里面的库函数和上述模拟实现的一样。不过要包含头文件。

stack的使用方法和vector一样。就不多解释了。


http://www.kler.cn/a/469035.html

相关文章:

  • Swift Concurrency(并发)学习
  • Nginx——入门介绍、安装与核心配置文件结构(一/五)
  • Vue笔记-001-声明式渲染
  • 前端学习DAY31(子元素溢出父元素)
  • 机器人手眼标定
  • 设计模式 行为型 策略模式(Strategy Pattern)与 常见技术框架应用 解析
  • 探秘 AI Agent 之 Coze 智能体:从简介到搭建全攻略(4/30)
  • 超大规模分类(二):InfoNCE
  • ffmpeg之yuv格式转h264
  • 人工智能-Python网络编程-TCP
  • 数据库基础:SQL 与 NoSQL 的区别与应用场景
  • BERT的中文问答系统61
  • 桌面开发 的设计模式(Design Patterns)核心知识
  • Qt实现使用TCP与RS485串口设备通信————附带详细实践方法
  • KCP技术原理
  • HTML——77.网页编码及乱码处理
  • 深度学习之父
  • 会员制电商创新:开源 AI 智能名片与 2+1 链动模式的协同赋能
  • HTTP STATUS CODE详情,HTTP状态码大全列表
  • MYsql--------ubantu中安装mysql
  • 【顶刊TPAMI 2025】多头编码(MHE)之极限分类 Part 2:基础知识
  • 模型 九屏幕分析法
  • 麒麟服务器安装kafka--亲测
  • net core介绍
  • 六、Hadoop环境搭建之克隆虚拟机
  • go语言zero框架中教务crm系统的在职继承和离职交接的设计与实践