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,1)"> head

     nil {
            tmp.next = newHeroNode
            
        }
        if tmp.next.ID > newHeroNode.ID {
            tmp2 := tmp.next
            tmp.next = newHeroNode
            newHeroNode.next = tmp2
            
        } else if tmp.next.ID == newHeroNode.ID {
            fmt.Printf(已经存在id为%d的节点\n,tmp.next.ID)
            else {
            tmp = tmp.next
        }
    }

}

DeleteHeroNode 删除
func DeleteHeroNode(head *HeroNode,ID ) {
    tmp := nil {
            fmt.Println(链表中没有该id)
             ID {
            if tmp.next.next == nil {
                tmp.next = nil
            }  {
                tmp2 := tmp.next.next
                tmp.next = tmp2
            }
             tmp.next
        }
    }
}

FindHeroNode 查找
func FindHeroNode(head *HeroNode,1)"> ID {
            fmt.Println(找到了该idModifyHeroNode 修改
func ModifyHeroNode(head *HeroNode,1)">int,changeName  ID {
            tmp.next.Name = changeName
            ListHeroNode 显示信息
func ListHeroNode(head * nil {
        fmt.Println(链表为空)
        return
    }
     {
        fmt.Printf(节点信息如下:id=%d,name=%s\n tmp.next
        已显示所有信息
        }
    }
}

main.go

package main

import go_code/data_structure/link

func main() {

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

运行结果:

相关文章

类型转换 1、int转string 2、string转int 3、string转float ...
package main import s "strings" import...
类使用:实现一个people中有一个sayhi的方法调用功能,代码如...
html代码: beego代码:
1、读取文件信息: 2、读取文件夹下的所有文件: 3、写入文件...
配置环境:Windows7+推荐IDE:LiteIDEGO下载地址:http:...