2025年7月23日 06:12:48 星期三

go: 实现一个栈stack

可以用简单的slice来实现。

  1. // Stack ...
  2. type Stack struct {
  3. inner []byte
  4. }
  5. // Push ...
  6. func (s *Stack) Push(v byte) {
  7. s.inner = append(s.inner, v) // Push
  8. }
  9. // Pop ...
  10. func (s *Stack) Pop() byte {
  11. n := len(s.inner) - 1 // Top element
  12. v := s.inner[n]
  13. s.inner = s.inner[:n] // Pop
  14. return v
  15. }
  16. // Peek ...
  17. func (s *Stack) Peek() byte {
  18. n := len(s.inner) - 1 // Top element
  19. v := s.inner[n]
  20. return v
  21. }
  22. // Len ...
  23. func (s *Stack) Len() int {
  24. return len(s.inner)
  25. }

也可以用 collections里的库,链表实现的,线程不安全

  1. import (
  2. stackLib "github.com/golang-collections/collections/stack"
  3. )
  4. stack := stackLib.New()
  5. // stack.Len() stack.Peek() stack.Pop() stack.Push(v)

来自 大脸猪 写于 2021-06-01 15:50 -- 更新于2021-06-01 15:58 -- 0 条评论

0条评论

字体
字号


评论: