go语言实现无头单向链表

什么是无头单向链表

无头单向链表是一种线性数据结构,它的每个元素都是一个节点,每个节点都有一个指向下一个节点的指针。"无头"意味着这个链表没有一个特殊的头节点,链表的第一个节点就是链表的头。

优点:

  • 动态大小:链表的大小是动态的,可以在运行时添加或删除节点,这使得它在处理不确定数量的数据时非常有用。

  • 插入和删除效率高:在链表中插入或删除一个节点只需要改变一些指针,而不需要移动节点。如果你有一个指向要插入或删除位置的指针,这个操作可以在常数时间内完成。

  • 可以用于实现许多高级数据结构:链表可以用于实现许多其他高级数据结构,如堆栈、队列、图等。

缺点:

  • 访问效率低:访问链表中的元素需要从头节点开始遍历,这在链表很长时可能会很慢。链表不支持随机访问,每次查找都需要从头开始。

  • 额外的存储空间:链表的每个节点都需要额外的存储空间来存储指向下一个节点的指针,这在存储空间有限的情况下可能是一个问题。

  • 复杂性:链表的操作比数组复杂,特别是在插入和删除节点时,需要处理一些边界条件,如空链表、只有一个节点的链表等。
    在这里插入图片描述

代码


// 无头单向链表
type LinkNode struct {
	Val  int
	Next *LinkNode
}

type LinkedList struct {
	Head *LinkNode
}

func NewLinkedList() *LinkedList {
	return &LinkedList{
		Head: nil,
	}
}

func (l *LinkedList) Add(val int) {
	newNode := &LinkNode{Val: val}
	if l.Head == nil {
		l.Head = newNode

	} else {
		cur := l.Head
		for cur.Next != nil {
			cur = cur.Next
		}
		cur.Next = newNode
	}
}

func (l *LinkedList) Get() {
	cur := l.Head
	for cur != nil {
		println(cur.Val)
		cur = cur.Next
	}
}

func main() {
	linkedList := NewLinkedList()
	linkedList.Add(1)
	linkedList.Add(2)
	linkedList.Add(3)
	linkedList.Get()
}

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:/a/525957.html

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

2024.4.7周报

摘要 在本周阅读的文献中,提出了基于Transformer的GAN模型,GAN的生成器和鉴别器,都是基于Transformer的编码器架构构建的,通过处理图像的方式处理时间序列数据作为该模型的输入。该模型能够生成各种长度的多维时间序列数据&#…

【完全背包求方案数问题】AcWing1023.买书(赋练习题目)

【题目链接】活动 - AcWing 输入样例1&#xff1a; 20输出样例1&#xff1a; 2输入样例2&#xff1a; 15输出样例2&#xff1a; 0输入样例3&#xff1a; 0输出样例3&#xff1a; 1 【代码】 //1023.买书——完全背包问题#include<bits/stdc.h>using namespace st…

Git - 如何重置或更改 Git SSH 密钥的密码?

Git 使用 ssh 方式拉取代码时&#xff0c;报 ssh password login&#xff0c;提示输入密码&#xff0c;这时很容易误填为 Git 的登录密码&#xff0c;其实这时需要输入 SSH 证书的密码&#xff0c;下面直接提供更改以及重新导入证书的方式。 首先需要确认你的本地是否有 SSH 钥…

cesium 使用一张图片作为背景影像底图

cesium加载影像地图的时候&#xff0c;可以添加一张图片作为影像图片&#xff0c;避免一开始加载的时候地图上出现缺瓦片而不美观的情况 一、代码实现 // 添加一张图片作为影像图片&#xff0c;避免一开始加载的时候地图上出现缺瓦片的情况var world new Cesium.SingleTileI…

使用Vue3组件的计算属性

计算属性在Vue.js的computed选项中定义&#xff0c;它可以在模板上进行双向数据绑定以展示出结果或者进行其他处理。 通常用户会在模板中定义表达式&#xff0c;非常便利&#xff0c;Vue.js的设计初衷也是用于简单运算。但是在模板中放入太多的逻辑&#xff0c;会让模板变得臃…

20230610 1+X 中级理论考试20230916 1+X 中级理论考试

20230610 1X 中级理论考试 对分组结果进行约束使用having关键字 排序使用order by&#xff0c;倒序使用desc 删除数据的DELETE语句DELETE FROM TABLENAME ArrayList实现了List接口 ArrayList中的数据是有序的 final为常量关键字&#xff0c;修饰一个变量时表示该变量为…

QT 使用QMediaPlayer实现的简易视频播放器

文章目录 效果图功能点类介绍代码介绍总结 QT 使用QMediaPlayer实现的简易视频播放器 效果图 功能点 播放指定视频全屏/退出全屏开始/暂停/重置视频拖拽到指定位置播放 类介绍 需要在配置文件中加入Multimedia, MultimediaWidgets这俩个库。Multimedia&#xff1a;提供了一套…

演示python连接数据库

先准备好数据库的配置&#xff0c; 域名&#xff0c;端口号&#xff0c;用户&#xff0c;密码&#xff0c;数据库名称。安装好【pymysql】库。 注意这里的db里&#xff0c;输入 数据库的分库名称&#xff0c;不是输数据库的名称 # 导包 import pymysql# # 连接到MySQL数据库 …

Jackson 2.x 系列【15】序列化器 JsonSerializer

有道无术&#xff0c;术尚可求&#xff0c;有术无道&#xff0c;止于术。 本系列Jackson 版本 2.17.0 源码地址&#xff1a;https://gitee.com/pearl-organization/study-jaskson-demo 文章目录 1. 概述2. 方法2.1 构造2.2 序列化2.3 其他 3. 实现类3.1 StdSerializer3.1.1 源…

说说TCP为什么需要三次握手和四次挥手?

一、三次握手 三次握手&#xff08;Three-way Handshake&#xff09;其实就是指建立一个TCP连接时&#xff0c;需要客户端和服务器总共发送3个包 主要作用就是为了确认双方的接收能力和发送能力是否正常、指定自己的初始化序列号为后面的可靠性传送做准备 过程如下&#xff…

12 | 排序(下):如何用快排思想在O(n)内查找第K大元素?归并排序和快速排序

 下载APP  12 | 排序&#xff08;下&#xff09;&#xff1a;如何用快排思想在O(n)内查找第K大元素&#xff1f; 2018-10-17 王争数据结构与算法之美进入课程 讲述&#xff1a;修阳 时长21:58大小8.81M  上一节我讲了冒泡排序、插入排序、选择排序这三种排序算法&…

Linux系统软件安装

实战&#xff1a;在Linux上部署各类软件 MySQL数据库管理系统安装部署【简单】 简介 MySQL数据库管理系统&#xff08;后续简称MySQL&#xff09;&#xff0c;是一款知名的数据库系统&#xff0c;其特点是&#xff1a;轻量、简单、功能丰富。 MySQL数据库可谓是软件行业的明…

数据库不用mmap

你确定你想用 MMAP 实现数据库么&#xff1f;_哔哩哔哩_bilibili MMAP 的随机读与顺序读的性能表现不好&#xff0c;以及对于写主要是不可控的刷入时机以及代码冗余&#xff0c;所以 MMAP 不适合在数据库中使用。 mmap是posix系统调用&#xff0c;它提供由操作系统管理内存映…

el-date-picker禁用指定范围的日期

elementUI中el-date-picker禁用指定日期之前或之后的日期 通过配置picker-options配置指定禁用日期&#xff08;pickerOptions写到data里面&#xff09; <el-date-pickerv-model"date"type"date"size"small"value-format"yyyy-MM-dd&qu…

怎么显示文件后缀名?这4个策略很赞!

“在查看文件时&#xff0c;我总是无法看到文件的后缀名&#xff0c;有时候我都分辨不出它是什么文件&#xff0c;有朋友知道怎么显示文件后缀名吗&#xff1f;” 在日常使用电脑的过程中&#xff0c;文件后缀名扮演着重要的角色&#xff0c;它可以帮助我们识别文件的类型&…

C——找单身狗2

题目内容&#xff1a; 在一个数组中&#xff0c;室友两个数字出现了一次&#xff0c;其他所有数字都出现了两次。找出只出现一次的数字。 如&#xff1a;1&#xff0c;2&#xff0c;3&#xff0c;4&#xff0c;5&#xff0c;1&#xff0c;2&#xff0c;3&#xff0c;4&#xff…

【ZBrush】制作章鱼练习 01——头部

目录 本篇效果 步骤 一、准备工作 二、制作头部外形 三、制作眼睛 本篇效果 步骤 一、准备工作 我们需要制作的模型如下 首先创建一个球体 点击编辑对象 点击“生成 多边形网格物体” 选择“MatCap Gray”材质&#xff0c;颜色设置为白色 要打开“Mrgb”通道和“绘制”选…

Vue - 你知道Vue组件中的data为什么是一个函数吗

难度级别:中高级及以上 提问概率:80% 在Vue项目中,App.vue下的每个子组件都会生成一个单独的Vue实例对象,但这些子对象都是通过通过vue.extend方法创建而来的,也就是说我们平时在项目中所定义的Vue组件,都有一个相同的父类对象。这样也就…

CSS 基础:设置背景的 5 个属性及简写 background 注意点

你好&#xff0c;我是云桃桃。 一个希望帮助更多朋友快速入门 WEB 前端的程序媛。大专生&#xff0c;一枚程序媛&#xff0c;感谢关注。回复 “前端基础题”&#xff0c;可免费获得前端基础 100 题汇总&#xff0c;回复 “前端工具”&#xff0c;可获取 Web 开发工具合集 263篇…

实时计算平台设计方案:911-基于6U VPX的光纤图像DSP实时计算平台

基于6U VPX的光纤图像DSP实时计算平台 一、系统组成 该平台基于风冷式的 6U 6槽VPX图像处理平台&#xff0c;包括&#xff1a;计算机主板、计算机主板后板、存储板、图像信号处理板、图像信号处理板后板、图像光纤转接板、机箱背板及机箱组成。图1为系统背板结构示意图&…