データ構造の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アルゴリズムの実戦的な道を参照してください.