我正在學習Ruby,並且正在做一個鏈接列表類。我正在編寫雙向鏈表的刪除方法。我的問題是,如果我通過它的頭節點表示列表,我該如何刪除頭部?看起來Ruby不會讓你指定自變量,所以我不能將調用者的引用改爲下一個節點。一種解決方案是我可以從下一個節點和交換引用中複製密鑰,但是通常情況下,Ruby中是否有方法來更改調用者的引用?在Ruby中修改調用對象
class LinkedListNode
attr_accessor :next, :previous, :key
def initialize(key=nil, next_node=nil, previous=nil)
@next = next_node
@previous = previous
@key = key
end
def append(key=nil)
newnode = LinkedListNode.new(key)
seeker = self
while seeker.next != nil
seeker = seeker.next
end
newnode.previous = seeker
seeker.next = newnode
end
def delete(key=nil)
seeker = self
while seeker.key != key
return if seeker.next == nil
seeker = seeker.next
end
if seeker.previous != nil
if seeker.next != nil
seeker.previous.next = seeker.next
seeker.next.previous = seeker.previous
else
seeker.previous.next = nil
end
else
return self = self.next
end
return seeker = nil
end
def print
seeker = self
string = ""
while 1
if seeker.next == nil
string += seeker.key.to_s
break
else
string += seeker.key.to_s + " -> "
end
seeker = seeker.next
end
puts string
end
end
if __FILE__ == $0
ll = LinkedListNode.new(1)
ll.append(2)
ll.append(3)
ll.append(4)
ll.append(5)
ll.print
ll.delete(5)
ll.print
ll.delete(1)
ll.print
end