单链表反转实现
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 {
tempNode = &Node{Data:data[i], Next:nil}
} else if i == len(data)-1 {
s.list = &Node{Data:data[i], Next:tempNode}
} else {
tempNode = &Node{Data:data[i], Next:tempNode}
}
}
}
func (s *SingleLL)Reverse() *Node {
var pre *Node
pre = nil
cur := s.list
for(cur != nil) {
// 1.保存当前节点的next指针指向的链表
next := cur.Next
// 2.把当前节点的next指针指向反转后的新链表
cur.Next = pre
// 3.保存当前的链表状态放入到新链表中
pre = cur
// 4.将当前节点指针后移一位,准备下一次循环
cur = next
}
return pre
}
本文详细介绍了一种在Go语言中实现单链表反转的方法。通过定义单链表结构和初始化函数,文章提供了完整的单链表反转算法实现,包括三个关键步骤:保存当前节点的next指针指向的链表、修改当前节点的next指针指向反转后的新链表、更新新链表的状态以及移动当前节点指针。该算法适用于需要高效操作链表数据结构的场景。
534

被折叠的 条评论
为什么被折叠?



