数据结构(长期更新)第7讲:栈

数据结构(长期更新)

第7讲:栈

++跟着潼心走,轻松拿捏C语言,困惑通通走,一去不回头~欢迎开始今天的学++ ++习内容,你的支持就是博主最大的动力++ 。博主主页:潼心1412o-CSDN博客


目录

数据结构(长期更新)

第7讲:栈

[7.1 前言](#7.1 前言)

[7.2 概念性质](#7.2 概念性质)

[7.3 实现方式/底层结构](#7.3 实现方式/底层结构)

[7.4 基本操作](#7.4 基本操作)

[7.5 栈的应用(算法题解)](#7.5 栈的应用(算法题解))

[7.5.1 有效的括号](#7.5.1 有效的括号)


7.1 前言

上节课我们学习了双向链表,至此我们一共学习了两种线性表。顺序表和链表在使用上各有优劣。在需要批量存储,频繁调用时首选顺序表;在需要快速插入删除数据,根据需要增容时优先使用链表。今天我们来介绍一种全新的线性表结构------栈。

7.2 概念性质

栈是一种特殊的线性表,他只能在一端插入删除数据,具有后进先出的特性LIFO(LAST IN FIRST OUT)

栈顶:进行插入删除操作的一端

栈底:另一端

压栈:栈从栈顶插入数据叫做压栈、进栈、入栈

出栈:栈的删除数据

7.3 实现方式/底层结构

在实际使用中,我们一般选择数组作为栈的底层结构

分析:数组或链表哪个更好?

1.时间

时间复杂度首先看看哪一端作栈顶?首选时间复杂度低的一端

对于链表,选头节点作为栈顶,头插头删时间复杂度都为O(1)

对于数组,选取尾部作为栈顶,尾插尾删时间复杂度都为O(1)

2.空间

对于链表,插入一个新节点需要一个datatype,再加一个指针

对于数组,插入一个新数据只需要再开辟一个datatype的空间就ok

很明显,数组在空间上更具优势

7.4 基本操作

//初始化

//入栈---栈顶

//判断栈是否为空

//出栈---栈顶

//取栈顶元素

//获取栈中有效元素个数

//栈的销毁

7.5 栈的应用(算法题解)

7.5.1 有效的括号

https://leetcode.cn/problems/valid-parentheses/description/

思路:左括号入栈,右括号和栈顶进行匹配,不匹配false,全部完了,剩左括号也false

完整代码如下

需要注意的点:

正确思路:


++好了今天的学习内容就到这里啦,谢谢你的陪伴,我是潼心,下次再见~如果这篇文章对你有帮助的话。请务必给主播一个一键三连,球球了,这对主播很重要~++

博主主页:潼心1412o-CSDN博客

相关推荐
剑挑星河月5 分钟前
35.搜索插入位置
java·数据结构·算法·leetcode
闪电悠米15 分钟前
力扣hot100-438.找到字符串中所有字母异位词-固定长度滑动窗口详解
linux·服务器·数据结构·算法·leetcode·滑动窗口·力扣hot100
人道领域22 分钟前
【LeetCode刷题日记】51.N皇后
数据结构·算法
金融小师妹14 小时前
人工智能推演框架:非农降温信号如何重构黄金定价模型
数据结构·人工智能·机器学习·transformer
ysa05103017 小时前
【并查集】判环,深搜
数据结构·c++·算法·深度优先
.Hypocritical.19 小时前
数据结构笔记——链表成环/反转 + 有序二叉树(BST)构建、遍历、删除
java·数据结构
CSharp精选营6 天前
关系型 vs 非关系型:从原理到选型,一文搞定数据库核心分类
数据结构·nosql·关系型数据库·非关系型数据库·技术选型
刘马想放假9 天前
Modbus 全栈技术解析:TCP、RTU、ASCII、RTU over TCP
数据结构·网络协议
北域码匠10 天前
冒泡排序太慢?鸡尾酒排序双向优化,原生 C# 零第三方库完整代码
数据结构·排序算法·泛型·c# 算法·鸡尾酒排序·原生 c# 开发·冒泡排序优化·嵌入式算法
Darling噜啦啦17 天前
列表转树算法深度解析:从 Map 到 Reduce 的两种实现,面试高频考点
数据结构·算法·面试