두 갈래 트리 단일 체인 테이블 프로그램 실행에 필요한 파일 02 단일 체인 테이블 만들기

2058 단어

Swift 3.0


//
//  CreatSinglyList.swift
//  AlgorithmLeetCode
//
//  Created by okerivy on 2017/3/20.
//  Copyright © 2017  okerivy. All rights reserved.
//

import Foundation

typealias SinglyListNode = CreatSinglyList.SinglyListNode

public class CreatSinglyList {
    
    /**
     * Definition for singly-linked list.
     * public class ListNode {
     *     public var val: Int
     *     public var next: ListNode?
     *     public init(_ val: Int) {
     *         self.val = val
     *         self.next = nil
     *     }
     * }
     */
    
    class SinglyListNode {
        var val: Int
        var next: SinglyListNode?
        init(_ val: Int) {
            self.val = val
            self.next = nil
        }
    }
    
    var head: SinglyListNode?
    var tail: SinglyListNode?
    
    //  
    func appendToTail(_ val: Int) {
        if tail == nil {
            tail = SinglyListNode.init(val)
            head = tail
        } else {
            tail?.next = SinglyListNode.init(val)
            tail = tail?.next
        }
    }
    
    //  
    func appendToHead(_ val: Int) {
        if head == nil {
            head = SinglyListNode.init(val)
            tail = head
        } else {
            let temp = SinglyListNode.init(val)
            temp.next = head
            head = temp
        }
    }
    
    //  
    func convertArrayToSinglyList(_ array: [Int]) -> SinglyListNode? {
        
        if array.count == 0 {
            return nil
        }
        
        //  
        for value in array {
            appendToTail(value)
        }
        
        return head
    }
    
    //    
    func convertArrayToSinglyListCycle(_ array: [Int], _ position: Int) -> SinglyListNode? {
        
        if array.count == 0 {
            return nil
        }
        
        //  
        var  positionNode: SinglyListNode? = nil
        for i in 0..

좋은 웹페이지 즐겨찾기