我正在看一些使用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