Day.10 Stack

Stack(堆叠)是一种後进先出(LIFO)的资料结构

看一下图
Alt text

注:图源

你可以想像一下在厨房洗碗,盘子在洗手台堆起来,你一定是从最上面开始开,不会从最底。
或者是浏览器回到上一页的功能,愈近的记录会愈早读到,生活中还有满多stack的应用~

Stack观念跟程序都不难,以下来实作一下
这边会用slice来做,push资料的时候append到slice里面,pop的时候取slice最後的值就可以了。

程序:

type Stack struct {
	nodes []int
}

func (s *Stack) Push(val int) {
	s.nodes = append(s.nodes, val)
}

func (s *Stack) Pop() int {
	if len(s.nodes) == 0 {
		return 0
	}

	res := s.nodes[len(s.nodes)-1]
	s.nodes = s.nodes[0 : len(s.nodes)-1]

	return res
}

学完了,明天就来写leetcode XD~


<<:  从零开始学游戏设计:建立分数条 Part2.图片与文字

>>:  Day3. 从Example Code瞧瞧Matter.js的盘古开天

[Day 01] 前言 — 是谁杀了模型?

缘起 不知道大家是否有这样的经验,买了一本标榜手把手教学的书,随书附赠的 GitHub 页面上有与每...

[Day3] Cloud Architectures

讲到云端相关的议题,一定会看到的就是 IaaS 、 PaaS 与 SaaS。这几个名词可以算是云端的...

Day1 渗透测试定义与资安服务比较

何谓渗透测试 以骇客的角度,针对企业的网路、系统、网站进行检测弱点与漏洞,并撰写一份渗透测试报告提...

纯Javascript,使用new Date()制作date picker

刚好有一道面试题目,不能使用 input type=date 或任何现有套件,要做出类似Datepi...

自动化 End-End 测试 Nightwatch.js 之踩雷笔记:关闭多视窗

昨天利用了 window.open 可以开启新分页或视窗,今天则是来关闭多个视窗。 Nightwat...