我想確定我的鏈表是否爲空,但是,我不能通過檢查head.next == tail來做到這一點,因爲我會得到一個錯誤,即二元運算符「==」不能應用於'LLNode?'類型的操作。Swift中的循環鏈表
import Foundation
class LLNode<T> {
var key: T!
var next: LLNode?
var previous: LLNode?
}
public class LinkedList<T: Equatable> {
private var head: LLNode<T> = LLNode<T>()
private var tail: LLNode<T> = LLNode<T>()
init() {
head.next = tail
head.previous = tail
tail.next = head
tail.previous = head
}
func isEmpty() {
return head.next == tail ? true : false
}
}
對不起,應該是FUNC的isEmpty() - >布爾 –
你需要讓'LLNode '符合[Equatable協議](https://developer.apple.com/library/ios/documentation/Swift/Reference/Swift_Equatable_Protocol/) –
只是一個FYI,'=='運算符爲您提供了一個'Bool'值已經,所以完全沒有必要''?真:假'結束。事實上,任何時候你看到有人這樣做,總是沒有必要的,因爲顯然''左邊的'已經是'Bool'值。如果他們交換'true'和'false',他們可以使用'!'運算符來翻轉該值,或者使用'!='而不是'=='。 – Gavin