Anonymous user
Singly-linked list/Element definition: Difference between revisions
Added a SinglyLinkedList object; added procedures "append" and "prepend"; added "$" for the list; added example.
Thundergnat (talk | contribs) m (Regularize non-standard header markup) |
(Added a SinglyLinkedList object; added procedures "append" and "prepend"; added "$" for the list; added example.) |
||
Line 900:
=={{header|Nim}}==
<lang nim>type
next: Node[T]▼
Node[T] = ref object
data: T▼
▲ next: Node[T]
▲ data: T
SinglyLinkedList[T] = object
head, tail: Node[T]
proc newNode[T](data: T): Node[T] =
Node[T](data: data)
proc append[T](list: var SinglyLinkedList[T]; node: Node[T]) =
if list.head.isNil:
list.head = node
list.tail = node
else:
list.tail.next = node
list.tail = node
proc append[T](list: var SinglyLinkedList[T]; data: T) =
list.append newNode(data)
proc prepend[T](list: var SinglyLinkedList[T]; node: Node[T]) =
if list.head.isNil:
list.head = node
list.tail = node
else:
node.next = list.head
list.head = node
proc prepend[T](list: var SinglyLinkedList[T]; data: T) =
list.prepend newNode(data)
proc `$`[T](list: SinglyLinkedList[T]): string =
var s: seq[T]
var n = list.head
while not n.isNil:
s.add n.data
n = n.next
result = s.join(" → ")
var list: SinglyLinkedList[int]
for i in 1..5: list.append(i)
for i in 6..10: list.prepend(i)
echo "List: ", list</lang>
{{out}}
<pre>List: 10 → 9 → 8 → 7 → 6 → 1 → 2 → 3 → 4 → 5</pre>
=={{header|Objective-C}}==
|