• 设为首页
  • 点击收藏
  • 手机版
    手机扫一扫访问
    迪恩网络手机版
  • 关注官方公众号
    微信扫一扫关注
    公众号

go 链表操作

原作者: [db:作者] 来自: [db:来源] 收藏 邀请

链表的特点

用一组任意的存储单元存储线性表的数据元素(这组存储单元可以是连续的,也可以是不连续的)

结点

结点(node)

数据域 => 存储元素信息
指针域 => 存储结点的直接后继,也称作指针或链

首元结点 是指链表中存储的第一个数据元素的结点
头结点 是在首元结点之前附设的一个结点,其指针域指向首元结点(非必须)
头指针 是指向链表中第一个结点的指针

单链表特点

  • 每个结点中只包含一个指针域
  • 单链表是非随机存取的存储结构,要取得第i个数据元素必须从头指针出发,顺链进行寻找,也称为顺序存取的存取结构

官方包链表操作

https://pkg.go.dev/container/list

手动实现单链表部分操作

// 实现单链表一些基础操作
package main

import (
	"errors"
	"fmt"
)

// 链表结构
type ListNode struct {
	Data int
	Next *ListNode
}

// 初始化链表头,下面所有操作都基于带头链表
func NewListNode() *ListNode {
	return &ListNode{Next: nil}
}

// 获取链表长度
func (l *ListNode) Length() int {
	len := 0
	for l.Next != nil {
		len++
		l = l.Next
	}
	return len
}

// 插入节点
func (l *ListNode) InsertNode(d int) error {
	newNode := new(ListNode)
	newNode.Data = d
	newNode.Next = l.Next
	l.Next = newNode
	return nil
}

// 删除节点
func (l *ListNode) DelNode(d int) {
	if l == nil {
		errors.New("Empty List!")
		return
	}
	for l.Next != nil {
		if l.Next.Data == d {
			l.Next = l.Next.Next
			// return 是否全部删除与d相同数据
		}
		l = l.Next
	}
}

// 遍历单链表
func (l *ListNode) ListNode() {
	for l.Next != nil {
		fmt.Printf("%d", l.Next.Data)
		l = l.Next
	}
}

// 递归反转单链表
func ReverseList(pHead, node *ListNode) *ListNode {
	if node.Next == nil {
		pHead.Next = node
		return node
	}

	if n := ReverseList(pHead, node.Next); n != nil {
		n.Next = node
		node.Next = nil
	}

	return node
}

// 遍历反转单链表
func (pHead *ListNode) ReverseListV2() {
	pReverseHead := pHead
	var pNode = pHead.Next
	var pPrev *ListNode
	for pNode != nil {
		pNext := pNode.Next
		if pNext == nil {
			pReverseHead.Next = pNode
		}
		pNode.Next = pPrev
		pPrev = pNode
		pNode = pNext
	}
	return
}


鲜花

握手

雷人

路过

鸡蛋
该文章已有0人参与评论

请发表评论

全部评论

专题导读
上一篇:
go语言条件语句 if else发布时间:2022-07-10
下一篇:
go算法查询字符在字符串中的位置发布时间:2022-07-10
热门推荐
热门话题
阅读排行榜

扫描微信二维码

查看手机版网站

随时了解更新最新资讯

139-2527-9053

在线客服(服务时间 9:00~18:00)

在线QQ客服
地址:深圳市南山区西丽大学城创智工业园
电邮:jeky_zhao#qq.com
移动电话:139-2527-9053

Powered by 互联科技 X3.4© 2001-2213 极客世界.|Sitemap