golang实现单链表

清晨的麦田 · · 113 次点击 · · 开始浏览    
package main

import (
    "sync"
    "fmt"
)

func main() {
    node := Instance()
    node.Name = "张三"

    node1 := &Node{Name: "李四"}
    node2 := &Node{Name: "赵武"}
    node3 := &Node{Name: "李刘"}
    InsertNode(node, node1)
    InsertNode(node, node2)
    InsertNode(node, node3)

    ListNode(node)
}

type Node struct {
    Name    string
    NodePtr *Node
}

var node *Node
var once sync.Once

func Instance() (*Node) {
    once.Do(func() {
        if node == nil {
            node = &Node{}
        }
    })
    return node
}

//单链表追加节点
func InsertNode(oldNode, newNode *Node) {
    for {
        if oldNode.NodePtr == nil {
            break
        }
        //地址指向下一个节点的地址
        oldNode = oldNode.NodePtr
    }
    oldNode.NodePtr = newNode
}

func ListNode(node *Node) {
    if node.NodePtr == nil {
        return
    }
    for {
        fmt.Printf("NodeName==>%s==>", node.Name)
        node = node.NodePtr
        if node.NodePtr == nil {
            fmt.Printf("NodeName==>%s", node.Name)
            break
        }
    }

}

输出结果

NodeName==>张三==>NodeName==>李四==>NodeName==>赵武==>NodeName==>李刘
Process finished with exit code 0

本文来自:简书

感谢作者:清晨的麦田

查看原文:golang实现单链表

入群交流(和以上内容无关):Go中文网 QQ 交流群:798786647 或加微信入微信群:274768166 备注:入群;关注公众号:Go语言中文网

113 次点击  
加入收藏 微博
暂无回复
添加一条新回复 (您需要 登录 后才能回复 没有账号 ?)
  • 请尽量让自己的回复能够对别人有帮助
  • 支持 Markdown 格式, **粗体**、~~删除线~~、`单行代码`
  • 支持 @ 本站用户;支持表情(输入 : 提示),见 Emoji cheat sheet
  • 图片支持拖拽、截图粘贴等方式上传