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

【数据结构】栈与链表的区别

- 第 111篇 -
Date: 2025 - 07 - 16
Author: 郑龙浩(仟墨)

栈与链表的区别

一、基本概念

1. 栈是什么?

栈就像一摞盘子,只能从最上面拿取或放入新盘子, 专业术语叫"后进先出"(LIFO)结构

LIFO:last in first out

  • 只能在一端操作(栈顶)
  • 基本操作就两个:push(压栈)和pop(弹栈)
  • 可以用数组或链表实现

2. 链表是什么?

它由多个节点组成,每个节点存储数据和下一个节点的地址。

  • 可以随意在任何位置插入和删除
  • 不需要连续的内存空间
  • 常见类型:单向链表、双向链表、循环链表

3. 相同之处

其实链表和栈结构是非常相似的,最大的区别就是栈有了限制,只能在一端进行操作,而链表可以在两端甚至中间任意位置进行操作。

二、核心区别

1. 操作方式不同

操作链表
插入只能在栈顶push可以在任意位置插入
删除只能从栈顶pop可以删除任意节点
访问只能看栈顶元素可以遍历所有节点

2. 内存使用不同

  • 顺序栈(数组实现的栈):大小固定,可能浪费空间
  • 链栈(链表实现的栈):动态分配
  • 普通链表:最灵活

三、应用场景

1. 栈的典型用途

  • 浏览器后退按钮:最后访问的网址最先显示
  • 撤销操作:最后做的操作最先撤销
  • 函数调用:最后调用的函数最先返回

2. 链表的典型用途

  • 实现其他数据结构(如队列、图)
  • 需要频繁插入删除的场景
  • 内存管理系统中的内存分配
http://www.xdnf.cn/news/1130833.html

相关文章:

  • 【Qt开发】Qt的背景介绍(二)-> 搭建Qt开发环境
  • 如何在硬件中进行有效地调试
  • TCP 三次握手与四次挥手笔记
  • 前端vue3获取excel二进制流在页面展示
  • Promise与Axios:异步编程
  • sqli-labs靶场通关笔记:第23关 注释符过滤
  • React -自定义hooks - 封装双向数据绑定
  • 自动控制原理知识地图:舵轮、路径与导航图
  • 2025年C++后端开发高频面试题深度解析:线程安全LRU缓存设计与实现
  • C# StringBuilder源码分析
  • 2025年Java最新社招面试八股文+技术场景题(金九银十)
  • Hadoop架构演进:从1.0到2.0的深度对比与优化解析
  • Hadoop(二)
  • QT技巧之快速搭建串口收发平台
  • Taro.getRandomValues() 用法详解
  • 有哪些好用的原型设计软件?墨刀、Axure等测评对比
  • Elasticsearch+Logstash+Kibana部署
  • Taro.eventCenter 用法详解与实战
  • 深入核心:理解Spring Boot的三大基石:起步依赖、自动配置与内嵌容器
  • 【Qt+error】error: use of undeclared identifier ‘MainWindow
  • uniapp各端通过webview实现互相通信
  • qt 中英文翻译 如何配置和使用
  • Spring AI 系列之十三 - RAG-加载本地嵌入模型
  • 在 CentOS 8 上彻底卸载 Kubernetes(k8s)
  • k8s之持久化存储流程
  • JavaScript 异步编程的终极指南:从回调到 Promise、Async/Await
  • 深入解析Linux进程地址空间与虚拟内存管理
  • vivo S30评测:用设计诠释科技,以性能书写情怀
  • 电脑安装 Win10 提示无法在当前分区上安装Windows的解决办法
  • openEuler 22.03 LTS Rootless Docker 安装指南