堆叠是一种後进先出(Last In First Out)(LIFO)的资料结构,换句话说,堆叠就是将数据排成一列,由下往上堆放文件,只能从最新添加的数据开始存取。好处是,随时都能存取最新数据。堆叠与伫列常放在一起讨论,不过在此处,我们着重於堆叠的了解,明天再来看伫列的特性。
根据堆叠後进先出的特性,进行两种的操作:
这边有个小提醒,堆叠是线性结构,在操作上的时间复杂度为O(1)
这边以餐盘做比喻,在一碟餐盘中,若要使用一个餐盘,会先拿取最上面,再依序往下拿取,以这种方式会更容易理解堆叠。
我们先以Python程序码简单的理解堆叠的概念,使用append(添加)以及pop(移除)进行操作,每一次添加及删除都以最後一组开始(後进先出)。
x是空列表
x = []
#append:添加
x.append("red")
print(x) #输出结果:['red']
x.append("green")
print(x) #输出结果:['red', 'green']
x.append("blue")
print(x) #输出结果:['red', 'green', 'blue']
#pop:移除
x.pop()
print(x) #输出结果:['red', 'green']
x.pop()
print(x) #输出结果:['red']
x.pop()
print(x) #输出结果:[]
var stack = []
stack.push(1);
console.log(stack); // [1]
stack.push(2);
console.log(stack); // [1,2]
stack.push(3);
console.log(stack); // [1,2,3]
console.log(stack.pop()); // 3
console.log(stack); // [1,2];
console.log(stack.pop()); // 2
console.log(stack); // [1];
console.log(stack.pop()); // 1
console.log(stack); // []; -> empty
<<: Day 5-单元测试 3A 原则 (Arrange, Act 和 Assert) (基础-4)
>>: day5 : rancher管理与简易的安装相关套件
软件架构设计原则一切都是为了下面这两点,别忘了。 低耦合 高内聚 LSP 这个原则比较倾向是在物件导...
双指针算是一个解题蛮常用的小技巧,双指针指的是用两个指针对整个资料做遍历,而双指针又依照移动的方向...
举例: 想像你的产品有个/user/email route允许post request去修改已经认证...
正在复习C#~(书 和影片 文章 看到头晕) 发现有些观念真的简单又不简单 一定要用自己的方式搞懂~...
0x1 前言 之前都是建立付款方式为 ATM 的订单,另一个信用卡的流程都没跑过,今天就是要来跑一下...