题目描述

使用一个固定长度大小的数组实现栈

思路

思路:使用一个index进行指向当前可以插入元素的位置

  1. 使用一个index指向下次栈中加入元素的位置
  2. 如果要弹出元素,需要判断index是否大于1,如果大于弹出index-1位置的元素,index减去1,否则不可以弹出。
  3. 如果要加入元素,直接加入到index指向的位置,之后index++

具体实现

实现代码

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51

type Stack struct {
data []int
cap int
size int
}

func (s *Stack) Push(num int) {
//如果栈满
if s.size == s.cap {
return
}
s.data = append(s.data, num)
s.size++
}

func (s *Stack) Peek() int {
return s.data[s.size-1]
}

func (s *Stack) IsEmpty() bool {
if s.size == 0 {
return true
}

return false
}

func (s *Stack) Pop() int {
if s.IsEmpty() {
return -1
}
val := s.data[s.size-1]
s.data = s.data[:s.size-1]
s.size--
return val
}

func main() {
s := Stack{
data: []int{},
cap: 3,
}

s.Push(123)
s.Push(134)
s.Push(132)
s.Push(145)
fmt.Println(s.Peek())
fmt.Println(s.Pop())
}

评论