一、栈的定义
栈是一种只允许在某一端插入或读取数据的线性表结构。这里包含了3个含义:
- 栈是线性表结构。
- 栈只可以在某一端插入or读取数据,这一端叫做栈顶,另一端叫做栈底。
- 由于只能在某一端进行插入or读取数据,所以数据是先进后出的。
二、示例代码
- 栈结构定义:
type stack struct {
Top int //栈顶元素的索引
List []int
}
- 数据入栈:
func (s *stack) push(val int) {
s.Top++
s.List = append(s.List, val)
}
- 数据出栈:
//出栈,bool=false表示栈已空
func (s *stack) pop() (int, bool) {
if s.Top == -1 {
return 0, false
}
v := s.List[s.Top]
s.Top--
return v, true
}
三、算法题:用栈实现简易的计算器
详见:https://github.com/Eleven9527/dataStructureAndAlgorithmLearning
结语
数据结构和算法的demo及部分面试题的答案都在这里:https://github.com/Eleven9527/dataStructureAndAlgorithmLearning
专栏和项目都会陆续更新,路过的朋友帮忙star一下,不胜感激!
我是一名正在路上的程序员,希望与你一起攀登技术的高峰~