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

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

我的博客:yuanManGan

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

目录

栈的认识

静态模拟实现栈

创建栈

入栈

出栈

查询栈顶元素

查询栈帧元素个数

判空

代码测试

stack


栈的认识

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

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

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

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

静态模拟实现栈

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

就来简单模拟一下吧!

创建栈

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

cpp 复制代码
int st[N];
int n;

入栈

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

cpp 复制代码
void push(int x)
{
    st[++n] = x;
}

出栈

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

cpp 复制代码
void pop()
{
    n--;
}

查询栈顶元素

cpp 复制代码
int top()
{
    return st[n];
}

查询栈帧元素个数

cpp 复制代码
int size()
{
    return n;
}

判空

cpp 复制代码
bool empty()
{
    return n == 0;
}

代码测试

stack

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

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

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

相关推荐
CS创新实验室9 小时前
从顺序表到动态数组:数据结构的永恒基石与现代语言的优雅封装
数据结构·算法
8Qi810 小时前
LeetCode 23. 合并 K 个升序链表 —— 小顶堆(PriorityQueue)
数据结构·算法·leetcode·链表·
QiLinkOS11 小时前
《打破“用爱发电”:一种基于 Gitee 与时间戳的开源权益分配机制探索》
c语言·数据结构·c++·科技·算法·gitee·开源
Boom_Shu13 小时前
长方形的关系
数据结构·c++·算法
Lsk_Smion14 小时前
力扣实训 _ [543].二叉树的直径 _ [23].合并K个升序列表
数据结构·算法·leetcode
ID_1800790547316 小时前
淘宝商品详情数据接口深度解析:架构、鉴权、数据结构与实战
数据结构·架构
散峰而望17 小时前
【算法练习】算法练习精选:陶陶摘苹果(基础+升级)、Music Notes、字串变换,你能AC几道?
数据结构·c++·算法·leetcode·贪心算法·github·动态规划
凤凰院凶涛QAQ17 小时前
《Java版数据结构 & 集合类剖析》集合框架的封装设计与顺序表:“从 Iterable 到 ArrayList:集合框架的‘职业树“
java·开发语言·数据结构
8Qi817 小时前
LeetCode 148. 排序链表 —— 解法一:自顶向下递归(分治 + 归并)
数据结构·算法·leetcode·链表·递归·分治·归并
8Qi818 小时前
LeetCode 148. 排序链表 —— 解法二:自底向上归并(迭代,O(1) 空间)
数据结构·算法·leetcode·链表·归并·迭代