单向链表和可视化

package linkedlist

import "fmt"

type SinglyNode struct {
	Value string
	Next  *SinglyNode
}

func (s *SinglyNode) String() string {
	return fmt.Sprintf("value:%s", s.Value)
}

type SinglyList struct {
	Head *SinglyNode
}

func NewSinglyList() *SinglyList {
	return &SinglyList{}
}

func (s *SinglyList) IsEmpty() bool {
	return s.Head == nil
}

func (s *SinglyList) Append(v string) {
	newNode := &SinglyNode{Value: v}
	if s.IsEmpty() {
		s.Head = newNode
	} else {
		cur := s.Head
		for cur.Next != nil { // 代表当前节点一直有值
			cur = cur.Next
		}
		cur.Next = newNode
	}
}

最后更新于