zoukankan      html  css  js  c++  java
  • golang数据结构之单链表

    实现单链表的增删查改。

    目录如下:

    singleLink.go

    package link
    
    import (
        "fmt"
    )
    
    //HeroNode 链表节点
    type HeroNode struct {
        ID   int
        Name string
        next *HeroNode //指针
    }
    
    //InsertHeroNode 插入
    func InsertHeroNode(head *HeroNode, newHeroNode *HeroNode) {
        tmp := head
        for {
            if tmp.next == nil {
                break
            }
            tmp = tmp.next
        }
        tmp.next = newHeroNode
    }
    
    //InsertHeroNodeByID 根据id从小到大插入
    func InsertHeroNodeByID(head *HeroNode, newHeroNode *HeroNode) {
        tmp := head
    
        for {
            if tmp.next == nil {
                tmp.next = newHeroNode
                break
            }
            if tmp.next.ID > newHeroNode.ID {
                tmp2 := tmp.next
                tmp.next = newHeroNode
                newHeroNode.next = tmp2
                break
            } else if tmp.next.ID == newHeroNode.ID {
                fmt.Printf("已经存在id为%d的节点
    ", tmp.next.ID)
                break
            } else {
                tmp = tmp.next
            }
        }
    
    }
    
    //DeleteHeroNode 删除
    func DeleteHeroNode(head *HeroNode, ID int) {
        tmp := head
        for {
            if tmp.next == nil {
                fmt.Println("链表中没有该id")
                break
            }
            if tmp.next.ID == ID {
                if tmp.next.next == nil {
                    tmp.next = nil
                } else {
                    tmp2 := tmp.next.next
                    tmp.next = tmp2
                }
                break
            } else {
                tmp = tmp.next
            }
        }
    }
    
    //FindHeroNode 查找
    func FindHeroNode(head *HeroNode, ID int) {
        tmp := head
        for {
            if tmp.next == nil {
                fmt.Println("链表中没有该id")
                break
            }
            if tmp.next.ID == ID {
                fmt.Println("找到了该id")
                break
            } else {
                tmp = tmp.next
            }
        }
    }
    
    //ModifyHeroNode 修改
    func ModifyHeroNode(head *HeroNode, ID int, changeName string) {
        tmp := head
        for {
            if tmp.next == nil {
                fmt.Println("链表中没有该id")
                break
            }
            if tmp.next.ID == ID {
                tmp.next.Name = changeName
                break
            } else {
                tmp = tmp.next
            }
        }
    }
    
    //ListHeroNode 显示信息
    func ListHeroNode(head *HeroNode) {
        tmp := head
        if tmp.next == nil {
            fmt.Println("链表为空")
            return
        }
        for {
            fmt.Printf("节点信息如下:id=%d,name=%s
    ", tmp.next.ID, tmp.next.Name)
            tmp = tmp.next
            if tmp.next == nil {
                fmt.Println("已显示所有信息")
                break
            }
        }
    }

    main.go

    package main
    
    import "go_code/data_structure/link"
    
    func main() {
    
        head := &link.HeroNode{}
        hero1 := &link.HeroNode{
            ID:   1,
            Name: "宋江",
        }
        hero2 := &link.HeroNode{
            ID:   2,
            Name: "李逵",
        }
        hero4 := &link.HeroNode{
            ID:   4,
            Name: "林冲",
        }
        hero3 := &link.HeroNode{
            ID:   3,
            Name: "武松",
        }
        // link.InsertHeroNode(head, hero1)
        // link.InsertHeroNode(head, hero2)
        // link.InsertHeroNode(head, hero4)
        // link.InsertHeroNode(head, hero3)
    
        link.InsertHeroNodeByID(head, hero2)
        link.InsertHeroNodeByID(head, hero1)
        link.InsertHeroNodeByID(head, hero4)
        link.InsertHeroNodeByID(head, hero3)
        link.DeleteHeroNode(head, 3)
        link.FindHeroNode(head, 4)
        link.ModifyHeroNode(head, 4, "我是修改后的英雄")
        link.ListHeroNode(head)
    }

    运行结果:

  • 相关阅读:
    DOS命令,JDK安装,JAVA运行机制
    Typora学习
    我还能写我还能写
    博客展示
    测试报告
    【Alpha版本】冲刺阶段——Day 7
    【Alpha版本】冲刺阶段——Day 6
    【Alpha版本】冲刺阶段——Day 5
    【Alpha版本】冲刺阶段——Day 4
    【Alpha版本】冲刺阶段——Day 3
  • 原文地址:https://www.cnblogs.com/xiximayou/p/12011334.html
Copyright © 2011-2022 走看看