zvvq技术分享网

go 中反转链表(反转链表leetcode)

作者:zvvq博客网
导读这是新开发者最喜欢问的问题。如果您上过像样的数据结构课程,那么这很简单。 反转单个链表。 为了实现,我选择将链表设为泛型类型。 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21

zvvq.cn

这是新开发者最爱问的问题。如果你登过好点的数据结构课程,那这很简单。 zvvq.cn

翻转单独链表。 内容来自samhan666

为了达到,我选择将链表设成泛型类型。

zvvq

typenode[tany]struct{ 本文来自zvvq

datat

zvvq

next*node[t] zvvq.cn

}

zvvq

typelinkedlist[tany]struct{

zvvq

head*node[t]

内容来自samhan

}

内容来自samhan

func(ll*linkedlist[t])append(datat){ zvvq.cn

newnode:=&node[t]{data:data,next:nil} zvvq.cn

ifll.head==nil{ zvvq好,好zvvq

ll.head=newnode

内容来自zvvq,别采集哟

return zvvq好,好zvvq

} zvvq

current:=ll.head

本文来自zvvq

forcurrent.next!=nil{

内容来自zvvq,别采集哟

current=current.next

zvvq.cn

}

内容来自samhan666

current.next=newnode zvvq好,好zvvq

} 内容来自zvvq,别采集哟

针对反向函数,根据意识到我们需要做的就是维护偏向前一个节点表针,再将给出节点“下一个”设为前一个节点,仅需一次传送即可完成。

内容来自samhan

在我们抵达结尾时,我们就知道当前节点是列表的新“头”。

内容来自samhan666

func(ll*LinkedList[T])ReverseLinkedList(){ zvvq

varprev*Node[T]=nil

内容来自samhan666

varptr*Node[T]=ll.Head 本文来自zvvq

forptr!=nil{

内容来自zvvq,别采集哟

varnext*Node[T]=ptr.Next 内容来自zvvq

ptr.Next=prev

内容来自zvvq,别采集哟

prev=ptr

zvvq

ifnext==nil{

内容来自samhan666

ll.Head=ptr zvvq好,好zvvq

}

copyright zvvq

ptr=next zvvq好,好zvvq

}

zvvq

} 内容来自zvvq

我们是否错过初始条件?假如目录目前是双向链表,会增加什么多元性?请于评论中跟我说。 内容来自zvvq

感谢! 本文来自zvvq

本文及其本系列全部文章代码能够在这里找到 内容来自zvvq

以上就是go 中翻转链表的详细内容,大量请关注其他类似文章! zvvq.cn