单链表反转-golang实现

单链表反转两种方法 最近同学介绍了一个lettcode(力扣)OJ给我,个人认为这个网站比母校的oj,杭电oj界面友好很多,题库充足,且支持多种主流语言,很适合闲时刷刷提高算法能力,算法的练习如同内功的修炼,碰到算法问题,经常有一种无力感,只能慢慢总结了。 链表是一种重要的数据结构,因为有递归性质,所以总是难以理解,涉及链表的复杂操作总是感觉一头雾水,看别人的实现代码总是似懂非懂,看完就忘,实际上就是没有理解透彻,特... 阅读详情
package main

import (
	"fmt"
)
// 链表节点
type Node struct {
	value int
	next *Node
}
// 链表
type Link struct {
	head *Node
	size int
}
func main() {
	n1:=&Node{value: 1}
	n2:=&Node{next: n1,value: 2}
	n3:=&Node{next: n2,value: 3}
	n4:=&Node{next: n3,value: 4}
	n5:=&Node{next: n4,value: 5}
	l:=&Link{size: 5,head: n5}
	nL:=l.fz()
	nL.bl()
}
// 链表数据遍历
func (l *Link) bl() {
	cur:=l.head
	for cur != nil {
		fmt.Println(cur.value)
		cur=cur.next
	}
}

// 反转
func (l *Link) fz() *Link {
	if l.size <2 {
		return l
	}
	var pre *Node
	cur:=l.head
	for cur != nil {
		nxt:=cur.next
		cur.next = pre
		pre = cur
		cur=nxt
	}
	newLink:=&Link{
		size: l.size,
		head: pre,
	}
	return newLink
}

 

go:实现单链表反转(附完整源码) 阅读详情

相关推荐

go语言实现单链表反转算法(附完整源码)

go语言实现单链表反转算法(附完整源码)

希望我的博客,能帮上你解决学习中工作中所遇到的问题 329

golang反转链表

给你单链表的头节点 head ,请你反转链表,并返回反转后的链表。

oHeXianRen007的博客 852

增量编码器资讯大全

增量编码器是什么 增量式编码器是将位移转换成周期性的电信号,再把这个电信号转变成计数脉冲,用脉冲的个数表示位移的大小,按照工作原理编码器可分为增量式和绝对式两类。 增量式编码器是将位移转换成周期性的电信号,再把这个电信号转变成计数脉冲,用脉冲的个数表示位移的大小。 编码器是把角位移或直线位移转换成电信号的一种装置。前者称为码盘,后者称码尺.按照读出方式编码器可以分为接触式和非接触式两种.接触式采...

kindele的博客 6008

go实现反转链表

单独把这个提出来成一篇文章,只是为了方便看~ 双向链表操作点击此处哦 目录 定义及基本操作 反转&打印 main函数 控制台 定义及基本操作 package main import "fmt" type ListNode struct { Data int Next *ListNode } type List struct { First *ListNode .........

空山新雨后,天气晚来秋 1738

【蓝牙专题】HCI协议解析

一、概念: 很多人接触蓝牙,是从HCI开始,因为HCI是主机控制接口协议(Host Controller Interface),蓝牙命令通过HCI来发送到Controller; 1、架构 如下图,HCI通过物理接口(USB、UART等)或虚拟接口,传递数据到Controller,Controller也通过同样的接口发送接收数据,这里注意到HCI层是在L2CAP层之下,LMP层之上; HCI

蚂蚁的专栏 5068

基于粒子群算法的PID控制器优化设计

粒子群算法、PID、寻优

qq_46107700的博客 2万+

Go语言-实现单链表反转算法

Go语言实现链表的逆序_头插法头插法与尾插法头插法概念特点核心过程Go语言实现尾插法(补充)概念特点核心过程Go语言实现单链表反转的源码 头插法与尾插法 头插法 概念 通过控制插入的位置,每次让新插入的结点放在头结点的后继当中,而新加入的结点还需要连接上原来头结点的原本的后继 特点 插入的顺序与最后链表形成的顺序相反(这样就可以实现自我的反转) 核心过程 p = L->next; //保存原链表的后继 L->next = NULl; //将原链表的后继置为空 //当p非空时,使用q作为插入的结

xindada559的博客 1427

微博scheme

微博scheme

qq_42278595的博客 318

leetcode-链表篇3

给你一个链表,两两交换其中相邻的节点,并返回交换后链表的头节点。你必须在不修改节点内部的值的情况下完成本题(即,只能进行节点交换)。思路:看图片可以发现,这个题目本质上,是把链表分成两部分,交换前后两部分的顺序。加上前缀节点pre,找到要翻转的区间的头尾节点,将之翻转后。pre就是已经处理好的部分的尾节点, curr就是你要处理的部分的头节点。这题和上一题的唯一不同就在于,需要遍历一遍算出链表的长度,避免越界。你不能只是单纯的改变节点内部的值,而是需要实际进行节点交换。,请你反转链表,并返回反转后的链表。

h17802535087的博客 914

企业数字化转型解决方案架构设计:一个五维全景视角

本文系统探讨了企业数字化转型的架构设计框架,提出五维协同模型:企业架构作为战略罗盘,业务架构聚焦价值创造,应用架构实现能力载体,数据架构提供智能燃料,技术架构奠定基础支撑。文章深入分析了各架构域的核心要素、设计原则及相互关系,并指出数字化转型需通过渐进路径,结合战略引领、技术赋能和组织变革,构建有机统一的架构体系。该框架为企业应对数字化复杂性提供了系统性方法论,强调从整体视角实现技术与业务的深度融合。

金牌架构师 1254

基于Cesium实现,动态水面+大坝排水动画

一、绘制面状水域,使用水波纹理,进行渲染,水体透明,可以看到底色。三、使用粒子系统,将喷泉改变方向,加上重力设置,实现排水动画。二、绘制线状三维体,用作模拟大坝拦截效果。四、最后,模拟水位上升,进行淹没分析,

一醉千秋的专栏 1418

单链表反转 递归实现 GO语言

链表是一种比较常见的数据结构 单链表的反转用递归实现比较简单,这里简单讲一下。 首先定义节点 func reverseList(node *Node) *Node { if node.next == nil { return node } else { newHead := reverseList(node.next) node.next.next = node node.ne...

学无止境 755

【华为OD机试真题】18、喊7的次数重排 | 机试真题+思路参考+代码解析(C++、Java、Py)

题目描述 >喊7是一个传统的聚会游戏,N个人围成一圈,按顺时针从1到N编号。   编号为1的人从1开始喊数,下一个人喊的数字为上一个人的数字加1,但是当将要喊出来的数字是7的倍数或者数字本身含有7的话,不能把这个数字直接喊出来,而是要喊”过”。   假定玩这个游戏的N个人都没有失误地在正确的时机喊了”过”,当喊到数字K时,可以统计每个人喊”过”的次数。   现给定一个长度为N的数组,存储了打乱顺序的每个人喊”过”的次数,请把它还原成正确的顺序,即数组的第i个元素存储编号i的人喊

KJ.JK 4167

golang之反转单链表实现

1.给定一个链表,将链表的值进行反转??? 有如下两种方式: 1.遍历法 2.递归法 代码实现如下 package other_pratice import ( "fmt" "strconv" ) type ListNode struct { next *ListNode val int } func NewListNode(val int) *ListNode { return &ListNode{next: nil, val: val} } // 递归的方式 // 递归的

weixin_34593133的博客 782

高级数据结构之R树(R-tree)

R树(R-tree)是一种将B树扩展到多维情况下得到的数据结构,它最初由Antonin Guttman于1984年提出。B树的结点中会存储一个键的集合,这些键把线分成片段,沿着那条线的点仅属于一个片段。因此,B树使得我们可以很容易地找到点。如果把沿线各处的点表示成B树结点,我们就能够确定点所属唯一子结点,在那里可以找到该点。 Antonin Guttman在他提出R树的经典论文中给出的R树例子...

白马负金羁 1万+

TMS_WebGMaps_1.9.8.0_Full_Source

TMS_WebGMaps_1.9.8.0_Full_Source 全源码 delphi cbuilder

go 实现单链表反转

go实现单链表翻转 package main import "fmt" type ListNode struct { data interface{} Next *ListNode } //反转单链表 func reverseList(head *ListNode) *ListNode { cur := head var pre *ListNode ...

weixin_30566063的博客 276

SIMATIC S7-1200, S7-1500 PID 控制[手册]

SIMATIC S7-1200, S7-1500 PID 控制[手册]

2024年Go最新单链表反转两种方法_反转链表(7),2024年最新Golang免打包多渠道统计如何实现

但是在这个头结点插入代码中,p->next的值发生的变化,因为要将resultList结果链表的内容拼接到p的首节点后,所以要定义一个临时变量存p->next。头结点插入法的实质是重新创建了一个新的链表,通过遍历待反转链表,将链表每一个节点插入到创建的链表中,然后的到的这个创建的链表就是反转后的链表。宏观上来看,要实现节点1和节点2反转,需要将节点1插入节点2和节点3当中,然后将头节点为2的链表插入结果链表头结点后面,然后再后移一个节点做同样的操作。可以看到p是一个循环变量,初始值指向待反转的原始链表。

2401_84911535的博客 497

RU DOS版、EFI版32bit/64bit BIOS常用工具

DOS版、EFI版的RU工具,可用来查看IO、MEM、PCI、SMBIOS等资源。亲测在EFI SHELL下可用。

单链表及反转(python,go实现)

python实现: class ListNode(object): def __init__(self, val=0, p=None): self.value = val self.next = p def setNext(self, node): self.next = node class Li...

weixin_30540691的博客 193

【golang数据结构和算法】--单链表反转

单链表反转实现 package modules type SingleLL struct { list *Node } func (s *SingleLL)InitSingleLinkedList(data []int) { var tempNode *Node for i := 0; i < len(data); i++ { if i == 0 { tempNo...

CrazyJavaPerson的博客 282

python实现单链表反转_单链表反转python实现-Go语言中文社区

单链表的反转可以使用循环,也可以使用递归的方式1.循环反转单链表循环的方法中,使用pre指向前一个结点,cur指向当前结点,每次把cur->next指向pre即可。代码:class ListNode:def __init__(self,x):self.val=x;self.next=None;def nonrecurse(head): #循环的方法反转链表if he...

weixin_42376118的博客 128

【leetcode】通过递归反转单链表 - Go语言实现

问题描述见leetcode第206题:https://leetcode.com/problems/reverse-linked-list/#/description思路使用迭代的方式反转链表大家已经很熟了,其实递归调用栈的特性,我们也可以轻松做到链表反转。 链表反转后,原链表的最后一个结点,会变成新表的头结点。因此我们可以设递归函数总是返回当前链表的最后一个结点,这样最深的一层递归调用就是原链表的

停止更新 3288

golang_算法:单链表的反转

type Node struct { Next *Node Value interface{} } //反转单链表 //pre cur cur.Next //nil->1->2->3 //1->nil,2->3 //2->1->nil,3 //3->2->1->nil func ReverseList(head *Node) *N...

Grayan的博客 1657

LeetCode:206. 反转链表

反转一个单链表。 示例: 输入: 1->2->3->4->5->NULL 输出: 5->4->3->2->1->NULL 进阶: 你可以迭代或递归地反转链表。你能否用两种方法解决这道题? 来源:力扣(LeetCode) 链接:https://leetcode-cn.com/problems/reverse-linked-list 递归...

Kevin的博客 434

go语言递归反转单链表

点击个人博客,查看更多文章https://elonjelinek.github.io 单链表的结构:有两个字段,第一个是节点的值,第二个是节点的指针,指针指向下一个节点 type Node struct { Value int NextNode *Node } 递归反转思路:如果链表为空,就返回空;如果链表只有一个节点,就返回这个节点;如果有两个节点,就返回第二个节点,...

Charliewolf的博客 1294

反转链表 go语言

反转链表 反转一个单链表。 示例: 输入: 1-&gt;2-&gt;3-&gt;4-&gt;5-&gt;NULL 输出: 5-&gt;4-&gt;3-&gt;2-&gt;1-&gt;NULL 进阶: 你可以迭代或递归地反转链表。你能否用两种方法解决这道题? type ListNode struct { Val int Next *ListNode } func ...

s15738841819的博客 309

LeetCode算法题(Go语言实现)_31

三指针黄金法则:prev/current/nextTemp组合实现高效反转数学归纳证明:局部反转的正确性保证全局正确。

LuckyLay的博客 695
上一篇: go slice 第三个参数是容量
phpduang
博客等级 码龄10年 9粉丝 17原创
评论 1
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值