当前位置: 首页 > 编程笔记 >

Go语言单链表实现方法

贺高杰
2023-03-14
本文向大家介绍Go语言单链表实现方法,包括了Go语言单链表实现方法的使用技巧和注意事项,需要的朋友参考一下

本文实例讲述了Go语言单链表实现方法。分享给大家供大家参考。具体如下:

1. singlechain.go代码如下:

//////////

//单链表 -- 线性表

package singlechain

//定义节点

type Node struct {

    Data int

    Next *Node

}

/*

* 返回第一个节点

* h 头结点

 */

func GetFirst(h *Node) *Node {

    if h.Next == nil {

        return nil

    }

    return h.Next

}

/*

* 返回最后一个节点

* h 头结点

 */

func GetLast(h *Node) *Node {

    if h.Next == nil {

        return nil

    }

    i := h

    for i.Next != nil {

        i = i.Next

        if i.Next == nil {

            return i

        }

    }

    return nil

}

//取长度

func GetLength(h *Node) int {

    var i int = 0

    n := h

    for n.Next != nil {

        i++

        n = n.Next

    }

    return i

}

//插入一个节点

//h: 头结点

//d:要插入的节点

//p:要插入的位置

func Insert(h, d *Node, p int) bool {

    if h.Next == nil {

        h.Next = d

        return true

    }

    i := 0

    n := h

    for n.Next != nil {

        i++

        if i == p {

            if n.Next.Next == nil {

                n.Next = d

                return true

            } else {

                d.Next = n.Next

                n.Next = d.Next

                return true

            }

        }

        n = n.Next

        if n.Next == nil {

            n.Next = d

            return true

        }

    }

    return false

}

//取出指定节点

func GetLoc(h *Node, p int) *Node {

    if p < 0 || p > GetLength(h) {

        return nil

    }

    var i int = 0

    n := h

    for n.Next != nil {

        i++

        n = n.Next

        if i == p {

            return n

        }

    }

    return nil

}

2. main.go代码如下:
package main

import "fmt"

import "list/singlechain"

func main() {

    //初始化一个头结点

    var h singlechain.Node

    //往链表插入10个元素

    for i := 1; i <= 10; i++ {

        var d singlechain.Node

        d.Data = i

        singlechain.Insert(&h, &d, i)

        fmt.Println(singlechain.GetLoc(&h, i))

    }

    fmt.Println(singlechain.GetLength(&h))

    fmt.Println(singlechain.GetFirst(&h))

    fmt.Println(singlechain.GetLast(&h))

    fmt.Println(singlechain.GetLoc(&h, 6))

}

希望本文所述对大家的Go语言程序设计有所帮助。

 类似资料:
  • 本文向大家介绍C语言实现单链表实现方法,包括了C语言实现单链表实现方法的使用技巧和注意事项,需要的朋友参考一下 C语言实现单链表实现方法 链表和我们之前实现过的顺序表一样,都是简单的数据结构,链表分为单向链表、双向链表、循环链表。而单向链表又分为两种实现方法,一种为带头节点的单链表,一种为不带头节点的单链表。我们来具体看看不带头节点的单链表的实现 单链表:它是一种链式存储的线性表,用一组地址任意的

  • 本文向大家介绍C语言单链表实现方法详解,包括了C语言单链表实现方法详解的使用技巧和注意事项,需要的朋友参考一下 本文实例讲述了C语言单链表实现方法。分享给大家供大家参考,具体如下: slist.h slist.cpp main.cpp 附:单链表优化版本 slist.h slist.cpp main.cpp 希望本文所述对大家C语言程序设计有所帮助。

  • 本文向大家介绍C语言单链表的实现,包括了C语言单链表的实现的使用技巧和注意事项,需要的朋友参考一下 单链表是一种链式存取的数据结构,用一组地址任意的存储单元存放线性表中的数据元素。 链表结构: SList.h SList.cpp Test.cpp 以上内容是小编给大家介绍的C语言单链表的实现代码,希望对大家有所帮助!

  • 本文向大家介绍Go语言实现简单留言板的方法,包括了Go语言实现简单留言板的方法的使用技巧和注意事项,需要的朋友参考一下 本文实例讲述了Go语言实现简单留言板的方法。分享给大家供大家参考。具体实现方法如下: 希望本文所述对大家的Go语言程序设计有所帮助。

  • 本文向大家介绍C语言实现单链表反转,包括了C语言实现单链表反转的使用技巧和注意事项,需要的朋友参考一下 一、理解指针 看懂链表的结构并不是很难,但是一旦把它和指针混在一起,就很容易让人摸不着头脑。所以,要想写对链表代码,首先就要理解好指针。   有些语言有“指针”的概念,比如 C 语言;有些语言没有指针,取而代之的是“引用”,比如 Java、Python。不管是“指针”还是“引用”,实际上,它们的

  • 主要内容:单向链表,循环链表,双向链表链表是一种物理存储单元上非连续、非顺序的存储结构,数据元素的逻辑顺序是通过链表中的指针链接次序实现的。 链表由一系列结点(链表中每一个元素称为结点)组成,结点可以在运行时动态生成。每个结点包括两个部分:一个是存储数据元素的数据域,另一个是存储下一个结点地址的指针域。 使用链表结构可以避免在使用数组时需要预先知道数据大小的缺点,链表结构可以充分利用计算机内存空间,实现灵活的内存动态管理。但是链表失去