单链表的反转

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
    }

找到最后一个节点,并让头节点指向该节点,然后依次让之前的后一个节点指向其前一个节点

demo地址:https://github.com/yangguanghei/studyDateStructure

上一篇下一篇

猜你喜欢

热点阅读