mirror of
https://github.com/zekexiao/pocketlang.git
synced 2025-02-06 20:50:55 +08:00
68 lines
992 B
Plaintext
68 lines
992 B
Plaintext
![]() |
|
||
|
class Node
|
||
|
def _init(val)
|
||
|
self.val = val
|
||
|
self.next = null
|
||
|
end
|
||
|
|
||
|
def _to_string()
|
||
|
return "(${self.val})"
|
||
|
end
|
||
|
end
|
||
|
|
||
|
class LinkedList
|
||
|
def _init()
|
||
|
self.head = null
|
||
|
end
|
||
|
|
||
|
def append(node)
|
||
|
if self.head == null
|
||
|
self.head = node
|
||
|
else
|
||
|
last = self.head
|
||
|
while last.next
|
||
|
last = last.next
|
||
|
end
|
||
|
last.next = node
|
||
|
end
|
||
|
end
|
||
|
|
||
|
def reverse()
|
||
|
curr = self.head
|
||
|
prev = null; next = null
|
||
|
while curr
|
||
|
next = curr.next
|
||
|
curr.next = prev
|
||
|
prev = curr
|
||
|
curr = next
|
||
|
end
|
||
|
self.head = prev
|
||
|
end
|
||
|
|
||
|
def _to_string()
|
||
|
ret = ""
|
||
|
next = self.head
|
||
|
while next
|
||
|
ret += next._to_string()
|
||
|
ret += " --> "
|
||
|
next = next.next
|
||
|
end
|
||
|
ret += "null"
|
||
|
return ret
|
||
|
end
|
||
|
end
|
||
|
|
||
|
ll = LinkedList()
|
||
|
ll.append(Node(4))
|
||
|
ll.append(Node(6))
|
||
|
ll.append(Node(3))
|
||
|
ll.append(Node(9))
|
||
|
|
||
|
## FIXME: No override supported at the moment.
|
||
|
print(ll._to_string())
|
||
|
|
||
|
ll.reverse()
|
||
|
|
||
|
print(ll._to_string())
|
||
|
|