【数据结构】栈与链表的区别
- 第 111篇 -
Date: 2025 - 07 - 16
Author: 郑龙浩(仟墨)
栈与链表的区别
一、基本概念
1. 栈是什么?
栈就像一摞盘子,只能从最上面拿取或放入新盘子, 专业术语叫"后进先出"(LIFO)结构
LIFO:last in first out
- 只能在一端操作(栈顶)
- 基本操作就两个:push(压栈)和pop(弹栈)
- 可以用数组或链表实现
2. 链表是什么?
它由多个节点组成,每个节点存储数据和下一个节点的地址。
- 可以随意在任何位置插入和删除
- 不需要连续的内存空间
- 常见类型:单向链表、双向链表、循环链表
3. 相同之处
其实链表和栈结构是非常相似的,最大的区别就是栈有了限制,只能在一端进行操作,而链表可以在两端甚至中间任意位置进行操作。
二、核心区别
1. 操作方式不同
操作 | 栈 | 链表 |
---|---|---|
插入 | 只能在栈顶push | 可以在任意位置插入 |
删除 | 只能从栈顶pop | 可以删除任意节点 |
访问 | 只能看栈顶元素 | 可以遍历所有节点 |
2. 内存使用不同
- 顺序栈(数组实现的栈):大小固定,可能浪费空间
- 链栈(链表实现的栈):动态分配
- 普通链表:最灵活
三、应用场景
1. 栈的典型用途
- 浏览器后退按钮:最后访问的网址最先显示
- 撤销操作:最后做的操作最先撤销
- 函数调用:最后调用的函数最先返回
2. 链表的典型用途
- 实现其他数据结构(如队列、图)
- 需要频繁插入删除的场景
- 内存管理系统中的内存分配