package main import ( "fmt" ) type Node struct{ Data int Next *Node } type CircularLinkedList struct { Head *Node Tail *Node } func NewCircularLinkedList()*CircularLinkedList{ return &CircularLinkedList{} } func (l *CircularLinkedList)AddNode(num int){ node := &Node{ Data:num, } if l.Head==nil{ l.Head = node l.Tail = node l.Tail.Next = l.Head return } l.Tail.Next = node node.Next = l.Head l.Tail = node } func(l *CircularLinkedList)DeleteNode(num int){ //如果删除的数字和头结点相等 if l.Head.Data==num{ fmt.Println(111) l.Head = l.Head.Next l.Tail.Next = l.Head return } fmt.Println(2111) current := l.Head for current.Next!=l.Head{ if current.Data==num{ current.Next = current.Next.Next return } current = current.Next } } func (list *CircularLinkedList) show() { if list.Head == nil { return } current := list.Head for current.Next != list.Head { fmt.Printf("%d ", current.Data) current = current.Next } fmt.Printf("%d\n", current.Data) } func main(){ list:=NewCircularLinkedList() list.AddNode(1) list.AddNode(28) list.AddNode(4) list.show() list.DeleteNode(1) list.show() }
标签:current,Head,list,Next,链表,Tail,循环,go,CircularLinkedList From: https://www.cnblogs.com/zxqblogrecord/p/17572281.html