Go单链表(生成、反序列、删除节点)

生成单链表

package main
import "fmt"
// Node ...
type Node struct {
    
    
	Value int
	Next  *Node
}
// Create n就是0位,指向第一位
func (n *Node) Create(list []int) {
    
    
	cur := n
	for i := 0; i < len(list); i++ {
    
    
		//1.实例化node对象
		next := &Node{
    
    Value: list[i]}
		//2.当前指向性生成的对象
		cur.Next = next
		//3.当前对象更为最新
		cur = next
	}
}
func main() {
    
    
	obj := &Node{
    
    }
	obj.Create([]int{
    
    4, 2, 7, 1, 9, 3})
	obj.testResult()
}

// + 测试打印 ---------------------------------------------
func (n *Node) testResult() {
    
    
	item := n.Next
	fmt.Print(n.Value)
	for item != nil {
    
    
		fmt.Print("->", item.Value)
		item = item.Next
	}
	fmt.Println()
}

反序列化

待更新

删除任意节点

// Delete 删除链表节点, 根据值找对应值的对象,并删除
func (n *Node) Delete(val int) {
    
    
	item := n
	for item.Next != nil {
    
    
		if item.Next.Value == val {
    
    
			item.Next = item.Next.Next
			return
		}
		item = item.Next
	}
}

func main() {
    
    
	obj := &Node{
    
    }
	obj.Create([]int{
    
    4, 2, 7, 1, 9, 3})
	// 删除节点
	obj.Delete(1)
	obj.testResult()
}

猜你喜欢

转载自blog.csdn.net/qq_38900565/article/details/107794039