这是新开发者最爱问的问题。如果你登过好点的数据结构课程,那这很简单。
翻转单独链表。 内容来自zvvq,别采集哟
为了达到,我选择将链表设成泛型类型。
typenode[tany]struct{
本文来自zvvq
datat 内容来自samhan666
nextnode[t] 本文来自zvvq
} 内容来自zvvq,别采集哟
typelinkedlist[tany]struct{
headnode[t] 内容来自samhan
} 内容来自samhan
func(lllinkedlist[t])append(datat){
newnode:=&node[t]{data:data,next:nil}
ifll.head==nil{
内容来自samhan
ll.head=newnode
内容来自samhan
return
zvvq好,好zvvq
} 内容来自samhan666
current:=ll.head
forcurrent.next!=nil{ 本文来自zvvq
current=current.next 内容来自zvvq
} zvvq.cn
current.next=newnode 内容来自zvvq
} 内容来自zvvq,别采集哟
针对反向函数,根据意识到我们需要做的就是维护偏向前一个节点表针,再将给出节点“下一个”设为前一个节点,仅需一次传送即可完成。 内容来自zvvq,别采集哟
在我们抵达结尾时,我们就知道当前节点是列表的新“头”。 内容来自samhan666
func(llLinkedList[T])ReverseLinkedList(){ copyright zvvq
varprevNode[T]=nil 本文来自zvvq
varptrNode[T]=ll.Head
zvvq.cn
forptr!=nil{
内容来自samhan666
varnextNode[T]=ptr.Next
ptr.Next=prev copyright zvvq
prev=ptr
内容来自zvvq
ifnext==nil{
内容来自samhan
ll.Head=ptr 内容来自zvvq
} 内容来自samhan666
ptr=next
}
zvvq.cn
}
我们是否错过初始条件?假如目录目前是双向链表,会增加什么多元性?请于评论中跟我说。 本文来自zvvq
感谢!
本文及其本系列全部文章代码能够在这里找到
以上就是go 中翻转链表的详细内容,大量请关注其他类似文章! 本文来自zvvq