LeetCode反转链表Swift 面试

反转一个单链表。

示例:

输入: 1->2->3->4->5->NULL
输出: 5->4->3->2->1->NULL

进阶:
你可以迭代或递归地反转链表。你能否用两种方法解决这道题?

 

思路:双指针迭代

public class ListNode {
    public var val: Int
    public var next: ListNode?
    public init(_ val: Int) {
        self.val = val
        self.next=nil
    }
}

 

    func reverseList(_ head: ListNode?) -> ListNode? {
        var old = head//旧链表
        var new: ListNode? = nil//新链表
        var temp: ListNode? = nil//临时结点
        while old != nil {
            //对原链表做头删操作
            temp = old
            old = old?.next
            //对新链表做头插操作
            temp?.next = new
            new = temp
        }
        return new
    }

 

 

借鉴:https://blog.csdn.net/qq_42351880/article/details/88637387

posted @ 2021-01-06 15:09  黄增松  阅读(147)  评论(0编辑  收藏  举报