单链表的反转
2021-01-30 本文已影响0人
梁森的简书
/// 反转整个链表
func reverse() {
if isEmpty() == true {
return
}
let node = reverseNode(curNode: head.next)
print("\(node!.item ?? "")")
}
/// 反转某个节点
private func reverseNode(curNode: Node?) -> Node? {
if curNode?.next == nil {
head.next = curNode
return curNode
}
let preNode = reverseNode(curNode: curNode?.next)
preNode?.next = curNode
curNode?.next = nil
return curNode
}
找到最后一个节点,并让头节点指向该节点,然后依次让之前的后一个节点指向其前一个节点