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

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

栈与链表的区别

一、基本概念

1. 栈是什么?

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

LIFO:last in first out

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

2. 链表是什么?

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

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

3. 相同之处

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

二、核心区别

1. 操作方式不同

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

2. 内存使用不同

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

三、应用场景

1. 栈的典型用途

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

2. 链表的典型用途

  • 实现其他数据结构(如队列、图)
  • 需要频繁插入删除的场景
  • 内存管理系统中的内存分配
相关推荐
Lsk_Smion10 小时前
力扣实训 _ [102].层序遍历--前序--后续_递归与非递归的实现
数据结构·算法·leetcode
Lsk_Smion11 小时前
力扣实训 _ [25].K个一组链表
数据结构·链表
小欣加油11 小时前
leetcode3751 范围内总波动值I
java·数据结构·c++·算法·leetcode
V搜xhliang024613 小时前
临床科研新范式:从选题到投稿,AI智能体如何接管全流程?
运维·数据结构·人工智能·算法·microsoft·数据挖掘·自动化
梦想的颜色15 小时前
MySQL 查询性能核武器
运维·服务器·数据结构·数据库·mysql
八解毒剂15 小时前
查找-从二分查找到二叉排序树
数据结构·c++·算法
_日拱一卒17 小时前
LeetCode:78子集
数据结构·算法·leetcode·职场和发展
FuckPatience18 小时前
C# new List<T>(IEnumerable<T> collection),链表初始化时传入已存在链表
链表·c#·list
東隅已逝,桑榆非晚18 小时前
数据结构:算法效率与复杂度分析详解
数据结构·笔记·算法
半夜修仙18 小时前
分治思想对数组进行排序-归并排序
数据结构·算法·排序算法