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
}
上記のコードブロックに関する私の質問は、現在のポインタをリスト内の1つのノードに移動し、現在ポインタが指しているノードを指すようにヘッドポインタの参照を変更することです。しかし、元々current.nextを指していたノードにはどうなりますか?それへの参照はありませんが、ITはまだリストの2番目のノードへの参照を持っていますが、正しいですか?リスト内の次のノードへの参照がまだ残っている場合、このノードは完全にどのように削除されますか?私は、ノードがリストの途中で発見された場合、後に続くブロックで同じ質問があります:
if listIndex == index {
previous!.next = current?.next
current = nil
break
}
ご注意:私は学校ではないですし、これは宿題ではありません。私は独自にアルゴリズムを研究していて、もともとJavaで学んだ概念をレビューし、それらをSwiftに適用します。
ご清聴ありがとうございます。とても有難い! – syedfa