Go 单链表2

插入节点

1)、头插法

package main
import "fmt"
type Node struct {
    data  int
    next  *Node
}
func Shownode(p *Node){   //遍历
    for p != nil{
        fmt.Println(*p)
        p=p.next  //移动指针
    }
}
func main() {
    var head = new(Node)
    head.data = 0
    var tail *Node
    tail = head   //tail用于记录头结点的地址,刚开始tail的的指针指向头结点
    for i :=1 ;i<10;i++{
        var node = Node{data:i}
        node.next = tail   //将新插入的node的next指向头结点
        tail = &node      //重新赋值头结点
    }
    Shownode(tail) //遍历结果
}

2)、尾插法

package main
import "fmt"
type Node struct {
    data  int
    next  *Node
}
func Shownode(p *Node){   //遍历
    for p != nil{
        fmt.Println(*p)
        p=p.next  //移动指针
    }
}
func main() {
    var head = new(Node)
    head.data = 0
    var tail *Node
    tail = head   //tail用于记录最末尾的结点的地址,刚开始tail的的指针指向头结点
    for i :=1 ;i<10;i++{
        var node = Node{data:i}
        (*tail).next = &node
        tail = &node
    }
    Shownode(head) //遍历结果
}

 

posted @ 2022-09-18 16:44  南昌拌粉的成长  阅读(17)  评论(0编辑  收藏  举报