加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 大数据 > 正文

golang数据结构之双链表

发布时间:2020-12-16 09:18:12 所属栏目:大数据 来源:网络整理
导读:目录结构: ? ?doubleLink.go package linkimport ( " fmt " ) // HerosNode 链表节点 type HerosNode struct { ID int Name string pre *HerosNode 指针 next *HerosNode 指针 } InsertHerosNode 插入 func InsertHerosNode(head *HerosNode,newHerosNode *

目录结构:

?

?doubleLink.go

package link

import (
    "fmt"
)

//HerosNode 链表节点
type HerosNode struct {
    ID   int
    Name string
    pre  *HerosNode 指针
    next *HerosNode 指针
}

InsertHerosNode 插入
func InsertHerosNode(head *HerosNode,newHerosNode *HerosNode) {
    tmp := head
    for {
        if tmp.next == nil {
            break
        }
        tmp = tmp.next
    }
    tmp.next = newHerosNode
    newHerosNode.pre = tmp
}

InsertHerosNodeByID 根据id从小到大插入
func InsertHerosNodeByID(head *HerosNode,1)"> head

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

}

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

FindHerosNode 查找
func FindHerosNode(head *HerosNode,1)"> ID {
            fmt.Println(找到了该idModifyHerosNode 修改
func ModifyHerosNode(head *HerosNode,1)">int,changeName  ID {
            tmp.next.Name = changeName
            ForListHerosNode 显示信息
func ForListHerosNode(forHead *HerosNode) {
    fmt.Println(正向打印所有信息)
    tmp := forHead
     nil {
        fmt.Println(链表为空)
        return
    }
     {
        fmt.Printf(节点信息如下:id=%d,name=%sn tmp.next
        已显示所有信息
        }
    }
}

BackListHerosNode 显示信息
func BackListHerosNode(head *----------------------)
    fmt.Println(反向打印所有信息var backHead *HerosNode
     {
        tmp = nil {
            backHead =
        }
    }
     backHead.pre
        if backHead.pre == head {
            fmt.Printf(
        }
    }
}

main.go

package main

import go_code/data_structure/link

func main() {

    head := &link.HerosNode{}
    hero1 := &link.HerosNode{
        ID:   1宋江2李逵4林冲3武松 link.InsertHerosNode(head,hero1)
    
    link.InsertHerosNodeByID(head,hero2)
    link.InsertHerosNodeByID(head,hero1)
    link.InsertHerosNodeByID(head,hero4)
    link.InsertHerosNodeByID(head,hero3)
    link.DeleteHerosNode(head,)
    link.FindHerosNode(head,1)">)
    link.ModifyHerosNode(head,1)">4,我是修改后的英雄)
    link.ForListHerosNode(head)
    link.BackListHerosNode(head)
}

运行结果:

?

?

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读