У меня есть следующий класс Node, который указывает на следующий узел:
class Node<T> {
var data: T
var next: Node<T>?
init(data: T, next: Node<T>?) {
self.data = data
self.next = next
}
}
, и я написал метод для обратного преобразования данных, например
let list = Node<Int>(data:1,next :Node<Int>(data:2,next :Node<Int>(data :3,next :nil)))
, который имеет значения 1 , 2,3 должны иметь значения 3,2,1 вот моя функция:
extension Node {
func reverse() {
var firstNode = self
var previousNode: Node<T>? = nil
var currentNode = firstNode
var nextNode = firstNode.next
while nextNode != nil {
currentNode.next = previousNode
previousNode = currentNode
currentNode = nextNode!
nextNode = currentNode.next
}
currentNode.next = previousNode
firstNode = currentNode
var current = firstNode as Node<T>?
//print 3 2 1
while(current != nil)
{
print(current!.data)
current = current!.next
}
}
}
Печать в методе действительно отображает «3 2 1», однако, как я могу установить его для текущего объекта на быть обратным списком? Назначение в конце "self = current" похоже, запрещено.