网站首页 > 教程文章 正文
栈(stack):
是限定仅在表尾进行插入和删除操作的线性表。
1.如何理解”栈“?
1.1.栈(stack)是一种线性存储结构,它具有如下特点:
- 栈中的数据元素遵守“先进后出"(First In Last Out)的原则,简称FILO结构.
- 限定只能在栈顶进行插入和删除操作。
1.2.其他概念:
- 栈顶与栈底:允许元素插入与删除的一端称为栈顶(top),另一端称为栈底(base)。
- 压栈(push):栈的插入操作,叫做进栈,也称压栈、入栈。
- 弹栈(pop):栈的删除操作,也叫做出栈。
- 栈分为顺序栈和链式栈。
2.如何实现一个"栈"?
根据所使用的数据结构的不同,栈的实现方式含有两种。第一种是采用静态数组或动态数组,第二种是采用链表实现。
以c++实现一个顺序栈:
以c++实现一个链式栈:
使用c++STL中的list。
3.复杂度分析
不管是顺序栈还是链式栈,需要一个大小为 n 的数组。在入栈和出栈过程中,只需要一两个临时变量存储空间,所以空间复杂度是 O(1)。
不管是顺序栈还是链式栈,入栈、出栈只涉及栈顶个别数据的操作,所以时间复杂度都是 O(1)。
4.栈的应用是什么?
- 函数调用栈。
- 括号匹配问题。
- 栈在四则运算中的应用。
- 以及在树、图中遍历的应用。
等等……
https://gitee.com/yaoshanxia
猜你喜欢
- 2025-04-07 数据结构学习(八)栈和队列案例分析
- 2025-04-07 栈的顺序存储结构(栈的顺序存储结构定义及操作的实现)
- 2025-04-07 数据结构——第3章-栈和队列(栈和队列这两种数据结构各自有什么特点)
- 2025-04-07 想做外挂?先把汇编学好吧(汇编编程软件)
- 2025-04-07 Python常用算法学习(4) 数据结构(原理+代码)-最全总结
- 2025-04-07 Linux 多线程全面解析(linux多线程编程详解)
- 2025-04-07 栈是什么?栈有什么作用(栈是什么意思啊)
- 2025-04-07 手写“栈”数据结构(数据结构栈的实现代码)
- 2025-04-07 C/C++|头文件、源文件分开写的源起及作用
- 2025-04-07 实模式下CPU如何获取数据及指令(实模式下,cpu要执行的下一条指令的逻辑地址)
- 最近发表
- 标签列表
-
- location.href (44)
- document.ready (36)
- git checkout -b (34)
- 跃点数 (35)
- 阿里云镜像地址 (33)
- qt qmessagebox (36)
- md5 sha1 (32)
- mybatis plus page (35)
- semaphore 使用详解 (32)
- update from 语句 (32)
- vue @scroll (38)
- 堆栈区别 (33)
- 在线子域名爆破 (32)
- 什么是容器 (33)
- sha1 md5 (33)
- navicat导出数据 (34)
- 阿里云acp考试 (33)
- 阿里云 nacos (34)
- redhat官网下载镜像 (36)
- srs服务器 (33)
- pico开发者 (33)
- https的端口号 (34)
- vscode更改主题 (35)
- 阿里云资源池 (34)
- os.path.join (33)