データ構造のswiftはチェーンの反転を実現します.

1268 ワード

チェーンの逆転に詳しい面接問題ですが、チェーンの基礎知識はもう邪魔になりません.どうやってチェーンの逆転を実現しますか?
  • チェーンに入ってきた頭の結点は、反転した後の頭の結点
  • を返します.
  • 両のポインタが逆転
  • を巡回する.
    //      
    class ListNode {
        var val: Int
        var next: ListNode?
        
        init(_ val: Int) {
            self.val = val
            self.next = nil
        }
    }
    
  • 反転関数
  •     func reverList( node: ListNode) -> ListNode {
            
            var last: ListNode?
            var next: ListNode?
            var nodeH: ListNode? = node
            
            while nodeH != nil  {//nodeH       , nodeH.next   last ,    next     nodeH        。
                next = nodeH?.next
                nodeH?.next = last
                last = nodeH
                nodeH = next
                
            }
            //        nodeH == nil       last
            return last!
            
        }
    
    
  • 試験コード
  •         let alist = ListNode(1)
            let blist = ListNode(2)
            let clist = ListNode(3)
            let dlist = ListNode(4)
            
            alist.next = blist
            blist.next = clist
            clist.next = dlist
            
            let newlist = reverList(node: alist)
            
            print("=======\(newlist.val)")
            print("---------\(newlist.next!.val)")
    
    その他のアルゴリズムは故胤道長Swiftアルゴリズムの実戦的な道を参照してください.