单向链表和可视化
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
}
}
最后更新于