Swift:删除LinkedList中的常规项
我正在尝试从链接列表中删除常规项。我遇到的问题是,当我检查Swift:删除LinkedList中的常规项,swift,generics,linked-list,Swift,Generics,Linked List,我正在尝试从链接列表中删除常规项。我遇到的问题是,当我检查head?时,value==value,它要求“T”符合equalable 我很难做到这一点。当我试图通过将equalable添加到我的泛型类NNode,使NNode可均衡时,我的typealias节点有一个不符合协议均衡的错误。我该怎么办 class NNode<T: Equatable> { var value: T var next: NNode? init(value: T, next: NN
head?时,value==value
,它要求“T”符合equalable
我很难做到这一点。当我试图通过将equalable添加到我的泛型类NNode
,使NNode
可均衡时,我的typealias节点
有一个不符合协议均衡的错误。我该怎么办
class NNode<T: Equatable> {
var value: T
var next: NNode?
init(value: T, next: NNode?) {
self.value = value
self.next = next
}
}
class LinkedList<T> {
public typealias Node = NNode<T>
func delete(value: T) {
if head?.value == value {
head = head?.next
}
var prev: Node?
var current = head
while current != nil && current?.value != value {
prev = current
current = current?.next
}
prev?.next = current?.next
}
}
class NNode{
var值:T
下一个变量:NNode?
初始值(值:T,下一个值:NNode?){
自我价值=价值
self.next=下一个
}
}
类链接列表{
公共类型别名节点=NNode
func delete(值:T){
如果头?.value==值{
头=头?下一个
}
var-prev:节点?
无功电流=水头
当前时!=nil&¤t?.value!=value{
prev=当前
电流=电流?下一步
}
上一个?下一个=当前?下一个
}
}
您还需要将T
与链接列表中的equalable
一致:
class NNode<T: Equatable> { ... }
class LinkedList<T: Equatable> {
public typealias Node = NNode<T>
...
}
class NNode{…}
类链接列表{
公共类型别名节点=NNode
...
}
非常感谢!我被困在这个问题上有一段时间了