循环 Loop
节点类
public class ListNode {
public var val: Int
public var next: ListNode?
public init() {
self.val = 0
self.next = nil
}
public init(_ val: Int) {
self.val = val
self.next = nil
}
public init(_ val: Int, _ next: ListNode?) {
self.val = val
self.next = next
}
}
loop 循环逆序
func reverseList(_ head: ListNode?) -> ListNode? {
var headNode = head
var pre: ListNode?
var next: ListNode?
while headNode != nil {
next = headNode?.next
headNode?.next = pre
pre = headNode
headNode = next
}
return pre
}
递归
func reverseList(_ head: ListNode?) -> ListNode? {
if head?.next == nil {
return head
}
let pre = reverseList(head?.next)
head?.next?.next = head
head?.next = nil
return pre
}