单链表反转实现
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
}