由链表实现的stack

type Iterator

  1. func (iterator *Iterator) Begin() // 将迭代器重置为初始状态,然后调用Next获取第一个元素
  2. func (iterator *Iterator) End() // 将迭代器移过最后一个元素,然后调用Prev获取最后一个元素
  3. // 将迭代器移动到第一个元素,如果容器中有第一个元素则返回true。
  4. // 如果First()返回true,则可以通过index()和value()检索第一个元素的索引和值。修改迭代器的状态
  5. func (iterator *Iterator) First() bool
  6. // 将迭代器移动到最后元素,如果容器中有第一个元素则返回true。
  7. // 如果Last()返回true,则可以通过index()和value()检索第一个元素的索引和值。修改迭代器的状态
  8. func (iterator *Iterator) Last() bool
  9. func (iterator *Iterator) Next() bool
  10. func (iterator *Iterator) Prev() bool
  11. func (iterator *Iterator) Index() int
  12. func (iterator *Iterator) Value() interface{}

type Stack

  1. func New() *Stack
  2. func (stack *Stack) Clear()
  3. func (stack *Stack) Empty() bool
  4. func (stack *Stack) FromJSON(data []byte) error
  5. func (stack *Stack) Iterator() Iterator
  6. func (stack *Stack) Peek() (value interface{}, ok bool)
  7. func (stack *Stack) Pop() (value interface{}, ok bool)
  8. func (stack *Stack) Push(value interface{})
  9. func (stack *Stack) Size() int
  10. func (stack *Stack) String() string
  11. func (stack *Stack) ToJSON() ([]byte, error)
  12. func (stack *Stack) Values() []interface{}

例子

  1. package main
  2. import lls "github.com/emirpasic/gods/stacks/linkedliststack"
  3. // LinkedListStackExample to demonstrate basic usage of LinkedListStack
  4. func main() {
  5. stack := lls.New() // empty
  6. stack.Push(1) // 1
  7. stack.Push(2) // 1, 2
  8. stack.Values() // 2, 1 (LIFO order)
  9. _, _ = stack.Peek() // 2,true
  10. _, _ = stack.Pop() // 2, true
  11. _, _ = stack.Pop() // 1, true
  12. _, _ = stack.Pop() // nil, false (nothing to pop)
  13. stack.Push(1) // 1
  14. stack.Clear() // empty
  15. stack.Empty() // true
  16. stack.Size() // 0
  17. }