Singly-linked list/Element definition: Difference between revisions

Added a SinglyLinkedList object; added procedures "append" and "prepend"; added "$" for the list; added example.
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 Node[T] = ref object
 
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]) =
var a = newNode 12
if list.head.isNil:
var b = newNode 13
list.head = node
var c = newNode 14</lang>
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}}==
Anonymous user