单向链表和可视化
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
}
}
package linkedlist
import (
"fmt"
"testing"
)
func TestSinglyList_Append(t *testing.T) {
list := NewSinglyList()
list.Append("Node1")
list.Append("Node2")
fmt.Println(list.Head)
cur := list.Head
for cur != nil{
fmt.Println(cur)
cur = cur.Next
}
}最后更新于