我正在看一些使用Swift實現LinkedList的代碼,並且我需要有人爲我澄清一些事情。首先,這裏是低於我的LinkedList類的代碼,以及我的函數從列表中刪除一個節點:需要關於使用Swift鏈接列表的說明
public class Node<T> {
var value:T
var next: Node?
}
public class LinkedList<T:Equatable> {
private var head = Node<T>()
func remove(at index: Int) {
if ((index < 0 || (index > (self.count - 1)) || (head.value == nil)) {
print("link does not exist.")
return
}
var current: Node? = head
var previous: Node<T>?
var listIndex:Int = 0
if index == 0 {
current = current?.next
head = current!
return
}
while current != nil {
if listIndex == index {
previous!.next = current?.next
current = nil
break
}
previous = current
current = current?.next
listIndex += 1
}
}
}
當談到從列表中刪除的對象,在下面的代碼塊:
if index == 0 {
current = current?.next
head = current!
return
}
與上述代碼塊有關的問題是,我意識到我將當前指針向下移動到列表中的一個節點上,然後將頭指針的引用更改爲指向當前指向的節點但是,最初指向current.next的節點會發生什麼?沒有提及它,但IT仍然對列表中的第二個節點有參考,是正確的?如果這個節點仍然有一個對列表中下一個節點的引用,它是如何完全刪除的?我有以下塊同樣的問題以後,當節點列表中的中間發現:
if listIndex == index {
previous!.next = current?.next
current = nil
break
}
請注意:我不是在學校,這不是功課。我正在學習算法,回顧我最初在Java中學到的概念,並將它們應用到Swift中。
非常感謝您的澄清。非常感激! – syedfa