iis服务器助手广告广告
返回顶部
首页 > 资讯 > 后端开发 > GO >Golang如何实现单链表
  • 732
分享到

Golang如何实现单链表

2023-07-05 12:07:27 732人浏览 薄情痞子
摘要

今天小编给大家分享一下golang如何实现单链表的相关知识点,内容详细,逻辑清晰,相信大部分人都还太了解这方面的知识,所以分享这篇文章给大家参考一下,希望大家阅读完这篇文章后有所收获,下面我们一起来了解一下吧。1. 定义节点// 

今天小编给大家分享一下golang如何实现单链表的相关知识点,内容详细,逻辑清晰,相信大部分人都还太了解这方面的知识,所以分享这篇文章给大家参考一下,希望大家阅读完这篇文章后有所收获,下面我们一起来了解一下吧。

1. 定义节点

// node 定义节点type Node struct {    Data any    Next *Node}type LinkedList struct {    headNode *Node // 头指针}

2. IsEmpty():

// IsEmpty 判断链表是否为空func (l *LinkedList) IsEmpty() bool {    if l.headNode == nil {        return true    }    return false}

3. Length():

// Length 向链表尾部添加结点func (l *LinkedList) Length() int {    currentNode := l.headNode    if currentNode == nil {        return 0    }    length := 0    for currentNode != nil {        length++        currentNode = currentNode.Next    }    return length}

4. AddFromHead():

// AddFromHead 向链表尾部添加结点func (l *LinkedList) AddFromHead(data any) {    node := &Node{data, nil}    if l.IsEmpty() { // 如果链表为空,设置该node为头结点即可        l.headNode = node        return    }    // 将头指针指向的头结点设置为该节点的next,并将头指针指向该节点    node.Next = l.headNode    l.headNode = node}

5. AddFromTail():

// AddFromTail 向链表尾部添加结点func (l *LinkedList) AddFromTail(data any) {    node := &Node{data, nil}    if l.IsEmpty() == true {        l.headNode = node        return    }    currentNode := l.headNode    for currentNode.Next != nil { // 直接遍历到最后一个节点        currentNode = currentNode.Next    }    currentNode.Next = node}

6. Insert()

// Insert 向链表中指定位置添加结点,下标0开始func (l *LinkedList) Insert(position int, data any) {    if position <= 0 { // 如果位置<=0,就直接在从头部添加        l.AddFromHead(data)    } else if position >= l.Length() { // 如果位置>=l.Length(),就直接在从尾部添加        l.AddFromTail(data)    } else { // 否则        node := &Node{data, nil}        preNode := l.headNode        count := 0        for count != position-1 { // 循环退出以后pre刚好在position-1的位置            preNode = preNode.Next            count++        }        node.Next = preNode.Next        preNode.Next = node    }}

7. DeleteHead()

// DeleteHead 删除头部func (l *LinkedList) DeleteHead() any {    if l.IsEmpty() {        fmt.Println("LinkedList is empty")        return nil    }    head := l.headNode    l.headNode = l.headNode.Next    return head}

8. DeleteTail()

// DeleteTail 删除尾部节点func (l *LinkedList) DeleteTail() any {    if l.IsEmpty() {        fmt.Println("LinkedList is empty")        return nil    }    currentNode := l.headNode    for currentNode.Next.Next != nil { //如果下下个节点为nil,说明下个节点是最后一个节点        currentNode = currentNode.Next    }    data := currentNode.Next.Data    currentNode.Next = nil // 删除最后一个节点    return data}

9. Remove()

// Remove 删除指定节点func (l *LinkedList) Remove(data any) {    if l.IsEmpty() {        return    }    currentNode := l.headNode    if currentNode.Data == data {        l.headNode = currentNode.Next    } else {        for currentNode.Next != nil { // 遍历到倒数第二个节点            if currentNode.Next.Data == data { // 用下一个节点去比较(保证尾结点不被漏掉),头结点在上面已经比较过了                currentNode.Next = currentNode.Next.Next            } else {                currentNode = currentNode.Next            }        }    }}

10. Contain()

// Contain 链表中是否包含某个值的节点func (l *LinkedList) Contain(data any) bool {    if l.IsEmpty() {        return false    }    currentNode := l.headNode    if currentNode.Data == data {        return true    }    for currentNode != nil {        if currentNode.Data == data {            return true        }        currentNode = currentNode.Next    }    return false}

11. Traverse()

// Traverse 遍历单链表func (l *LinkedList) Traverse() {    if l.IsEmpty() {        fmt.Println("LinkedList is empty")        return    }    currentNode := l.headNode    for currentNode != nil {        fmt.Printf("%v -> ", currentNode.Data)        currentNode = currentNode.Next    }}

以上就是“Golang如何实现单链表”这篇文章的所有内容,感谢各位的阅读!相信大家阅读完这篇文章都有很大的收获,小编每天都会为大家更新不同的知识,如果还想学习更多的知识,请关注编程网GO频道。

您可能感兴趣的文档:

--结束END--

本文标题: Golang如何实现单链表

本文链接: https://www.lsjlt.com/news/351688.html(转载时请注明来源链接)

有问题或投稿请发送至: 邮箱/279061341@qq.com    QQ/279061341

本篇文章演示代码以及资料文档资料下载

下载Word文档到电脑,方便收藏和打印~

下载Word文档
猜你喜欢
  • Golang如何实现单链表
    今天小编给大家分享一下Golang如何实现单链表的相关知识点,内容详细,逻辑清晰,相信大部分人都还太了解这方面的知识,所以分享这篇文章给大家参考一下,希望大家阅读完这篇文章后有所收获,下面我们一起来了解一下吧。1. 定义节点// ...
    99+
    2023-07-05
  • golang如何实现链表
    实现链表的方法:1、定义了一个Node结构体来表示链表的节点,每个节点包含一个数据项和一个指向下一个节点的指钁;2、定义了一个LinkedList结构体来表示链表本身,其中包含一个指向链表头节点的指针;3、实现了两个方法,append用于在...
    99+
    2023-12-14
    Golang 链表
  • php如何实现单链表
    本文将为大家详细介绍“php如何实现单链表”,内容步骤清晰详细,细节处理妥当,而小编每天都会更新不同的知识点,希望这篇“php如何实现单链表”能够给你意想不到的收获,请大家跟着小编的思路慢慢深入,具体内容如下,一起去收获新知识吧。php实现...
    99+
    2023-06-06
  • C++如何实现单链表
    小编给大家分享一下C++如何实现单链表,相信大部分人都还不怎么了解,因此分享这篇文章给大家参考一下,希望大家阅读完这篇文章后大有收获,下面让我们一起去了解一下吧!单链表的实现(从入门到熟练)概念和结构概念:链表是一种物理存储结构上非连续、非...
    99+
    2023-06-29
  • golang链表反转如何实现
    要实现golang链表的反转,可以采用迭代的方式或者递归的方式。 迭代方式的代码如下: type ListNode struct {...
    99+
    2023-10-26
    golang
  • python如何实现单向链表及单向链表的反转
    链表的定义 链表中的每个节点会存储相邻节点的位置信息,单链表中的每个节点只存储下一关节点的位置信息 单向链表的实现 class ListNode: def __init_...
    99+
    2024-04-02
  • Golang实现单链表的示例代码
    目录1. 定义节点2. IsEmpty():3. Length():4. AddFromHead():5. AddFromTail():6. Insert()7. Delet ...
    99+
    2023-03-15
    Golang 单链表
  • C++详解如何实现单链表
    目录单链表单链表的基本操作1.初始化2.取值3.查找4.插入5.删除示例代码开发环境运行结果单链表 链表内存空间不一定连续,其扩展性较好。多余的不多说了。该文主要记录单链表的实现,该...
    99+
    2024-04-02
  • C++和python如何实现单链表
    这篇文章给大家分享的是有关C++和python如何实现单链表的内容。小编觉得挺实用的,因此分享给大家做个参考,一起跟随小编过来看看吧。一、链表的基本概念链表是数据元素的线性集合(Linear Collection),物理存储不连续。那么,这...
    99+
    2023-06-29
  • python 实现线性链表(单链表)
    初学python,拿数据结构中的线性链表存储结构练练手,理论比较简单,直接上代码。 #!/usr/bin/python # -*- coding:utf-8 -*- # Author: Hui # Date: 2017-10-13...
    99+
    2023-01-31
    链表 线性 python
  • python实现单链表
    #encoding:utf-8 import sys class Lnode():     def __init__(self,elem,next=None):         self.elem = elem    #节点的值   ...
    99+
    2023-01-31
    链表 python
  • golang单链表倒转
    前言在计算机科学中,链表是一种基本的数据结构,它由一系列节点组成,节点通过指针来相互链接。链表可以方便地实现插入和删除操作,但是访问操作的性能相对较差,因为需要通过遍历来查找元素。本文将介绍如何使用Golang实现单链表的倒转算法。单链表的...
    99+
    2023-05-15
  • 如何使用rust实现简单的单链表
    目录前言1.链表节点的定义2.链表的定义3.实现从链表头部插入节点的prepend方法4.为链表实现Display trait定制链表的打印显示5.为链表实现翻转链表功能的rever...
    99+
    2024-04-02
  • C语言中单链表如何实现
    这篇文章主要介绍“C语言中单链表如何实现”,在日常操作中,相信很多人在C语言中单链表如何实现问题上存在疑惑,小编查阅了各式资料,整理出简单好用的操作方法,希望对大家解答”C语言中单链表如何实现”的疑惑有所帮助!接下来,请跟着小编一起来学习吧...
    99+
    2023-07-04
  • python单向循环链表如何实现
    本篇内容主要讲解“python单向循环链表如何实现”,感兴趣的朋友不妨来看看。本文介绍的方法操作简单快捷,实用性强。下面就让小编来带大家学习“python单向循环链表如何实现”吧!单向循环链表将所有的链接在一起,每一个节点分为数据存储区和链...
    99+
    2023-07-06
  • C语言如何实现单链表操作
    本篇内容介绍了“C语言如何实现单链表操作”的有关知识,在实际案例的操作过程中,不少人都会遇到这样的困境,接下来就让小编带领大家学习一下如何处理这些情况吧!希望大家仔细阅读,能够学有所成!1 链表的概念及结构概念:链表是一种物理存储结构上非连...
    99+
    2023-06-29
  • Python实现单向链表
    单向链表每个节点都是由两部分组成:数据字段和指针,指针指向下一个元素在内存中的位置。 单向链表的第一个节点节点是链表头指针,而最后一个节点的指针设为None,不指向任何元素。(链表头...
    99+
    2024-04-02
  • python单链表的实现
    ''' 当加入第一个node节点的时候,会有几个值,(这里的self.tail.next 其实就是node.next) head = item = tail = Node(object element1 memory) item = hea...
    99+
    2023-01-31
    链表 python
  • C++数据结构之单链表如何实现
    这篇文章主要介绍了C++数据结构之单链表如何实现的相关知识,内容详细易懂,操作简单快捷,具有一定借鉴价值,相信大家阅读完这篇C++数据结构之单链表如何实现文章都会有所收获,下面我们一起来看看吧。一、单链表的定义线性表的链式存储又称为单链表,...
    99+
    2023-06-30
  • Java如何实现单链表的增删改查
    一、新建学生节点类 Stu_Node节点包含: 学号:int num; 姓名:String name; 性别:String gender; 下一个节点:Stu_Node next;...
    99+
    2024-04-02
软考高级职称资格查询
编程网,编程工程师的家园,是目前国内优秀的开源技术社区之一,形成了由开源软件库、代码分享、资讯、协作翻译、讨论区和博客等几大频道内容,为IT开发者提供了一个发现、使用、并交流开源技术的平台。
  • 官方手机版

  • 微信公众号

  • 商务合作