首页 > 其他分享 >go 循环链表

go 循环链表

时间:2023-07-21 19:44:17浏览次数:35  
标签:current Head list Next 链表 Tail 循环 go CircularLinkedList

package main

import (
    "fmt"
)
type Node struct{
    Data int
    Next *Node
}

type CircularLinkedList struct {
    Head *Node
    Tail  *Node
}
func NewCircularLinkedList()*CircularLinkedList{
    return &CircularLinkedList{}
}
func (l *CircularLinkedList)AddNode(num int){
    node := &Node{
        Data:num,
    }
    if l.Head==nil{
        l.Head = node
        l.Tail = node
        l.Tail.Next = l.Head
        return
    }
    l.Tail.Next = node
    node.Next = l.Head
    l.Tail = node
}
func(l *CircularLinkedList)DeleteNode(num int){
    //如果删除的数字和头结点相等
    if l.Head.Data==num{
        fmt.Println(111)
        l.Head = l.Head.Next
        l.Tail.Next = l.Head
        return

    }
    fmt.Println(2111)
    current := l.Head
    for current.Next!=l.Head{
        if current.Data==num{
            current.Next = current.Next.Next
            return
        }
        current = current.Next
    }

}
func (list *CircularLinkedList) show() {
    if list.Head == nil {
        return
    }

    current := list.Head
    for current.Next != list.Head {
        fmt.Printf("%d ", current.Data)
        current = current.Next
    }
    fmt.Printf("%d\n", current.Data)
}
func main(){
    list:=NewCircularLinkedList()
    list.AddNode(1)
    list.AddNode(28)
    list.AddNode(4)
    list.show()
    list.DeleteNode(1)
    list.show()
}

 

标签:current,Head,list,Next,链表,Tail,循环,go,CircularLinkedList
From: https://www.cnblogs.com/zxqblogrecord/p/17572281.html

相关文章

  • 【补充】Django框架之IFrame中的跨域问题
    【一】iframe中的跨域问题详解在网页开发中浏览器会应用跨域安全策略,限制不同域名之间的交互。跨域问题指的是如果一个网页的脚本尝试访问另一个域名下的资源或与其通信时,浏览器会拒绝这样的请求。其中,使用<iframe>标签嵌套其他网页是一种常见的前端技术。然而,由于<i......
  • go语言log相关
    log包Go标准库中有log包,提供了简单的日志功能。输出格式输出换行输出解释log.Print()log.Printf()log.Println()类似fmt.Print*log.Fatal()log.Fatalf()log.Fatalln()相当于log.Print*+os.Exit(1)log.Panic()log.Panicf()log.Panicln()相当于log.P......
  • linux Vim配置Golang语言环境
    下载vim要配置Linux上的Vim,可以按照以下步骤进行操作:打开终端并运行以下命令安装Vim:sudoapt-getupdatesudoapt-getinstallvim12在主目录下创建.vimrc文件:cd~touch.vimrc12编辑.vimrc文件并添加您想要的配置选项。例如,您可以添加以下行以启用语法高亮和......
  • HJ48 从单向链表中删除指定值的节点
    1.题目读题 HJ48 从单向链表中删除指定值的节点 考查点 这道题的考查点是单向链表的删除操作,主要是考察你能否掌握以下几个方面:如何遍历链表,找到要删除的节点或其前驱节点。如何修改节点的指针域,使其跳过要删除的节点。如何释放要删除的节点的内存空间,防止内存泄......
  • AT_abc251_g Intersection of Polygons Solution
    AT_abc251_gIntersectionofPolygonsSolutionPreface由于某些\(\LaTeX\)的原因,本文的公式无法正常查看,建议读者访问博客以获得正常阅读体验。Statement逆时针地给定一个有\(N\)个顶点,第\(i\)个顶点为\((x_i,y_i)\)的凸包\(P_0\)。再给出\(M\)个向量\((u_i,v......
  • 【补充】Django中路由分发的本质
    【补充】Django中路由分发的本质【一】路由分发机制在Django中,admin路由分发的本质是将管理员后台管理功能与应用程序正常的URL分发机制进行了分离。admin路由分发可以让开发者方便地创建、配置和管理应用程序的后台管理界面。【二】关键部分admin.site.register(mod......
  • mongodb表由未分片修改为分片
    环境:mongodb:4.4.22 1.范围分片:刚开始没有使用分片,后面写入数据了使用分片在路由服务器上执行:mongos>sh.shardCollection("db_pushmsg.app_message_nofenpian",{"user_id":1}){"ok":0,"errmsg":"Pleasecreateanindexthat......
  • Go:Missing type in composite literal
    在使用含字符串数组的结构体时,我出现了以下问题1packagemain23import"github.com/gin-gonic/gin"45typeMyJsonstruct{6Functions[]string`json:"functions"`7Descstring`json:"desc"`8}910funcmain(){11......
  • mongodb主从架构
    MongoDB主从架构实现简介在MongoDB中,主从架构又称为复制集(replset),是一种可用性和可靠性的解决方案。主从架构中,有一个主节点(Primary)和多个从节点(Secondary)。主节点负责处理所有的写操作和读操作,而从节点只负责读操作,通过复制主节点的数据保持与主节点的数据同步。流程下面是......
  • Day 3: Shell条件语句和循环
    学习目标学习内容1.条件语句if语句case语句2.循环结构for循环while循环3.练习任务大树哥个人信息学习目标学习Shell中的条件语句,如if语句和case语句。理解循环结构,如for循环和while循环。练习编写脚本,包括条件判断和循环执行。学习内容今天我们将学习Shell中的条件语......