Quick actions

cmd+k|ctrl+k

Navigation

Languages

Linked List Attempt

Snippet info

Language

Nim

Visibility

unlisted

Author

legacy-anonymous

Created

2018-05-26T06:17:19Z

Updated

2018-05-26T06:17:19Z

type
  Node = ref object of RootObj
    prev, next: Node
    data: string

  List = ref object of RootObj
    starting, ending: Node
    count: int

proc addItem( list: List, val: string ): int =
  if list.count == 0:
    list.starting = Node( prev: nil, next: nil, data: val )
    list.starting.data = val
    list.ending = list.starting
  else:
    list.ending.next = Node( prev: nil, next: nil, data: val )
    list.ending.next.prev = list.ending
    list.ending = list.ending.next

  list.count += 1
  result = list.count

iterator items( list: List ): string =
  var itr = list.starting
  while itr != nil:
    yield itr.data
    itr = itr.next

if isMainModule:
  var list: List = List( starting: nil, ending: nil, count: 0 )
  echo addItem( list, "hello" )
  echo addItem( list, "world" )
  for item in list:
    echo item
INFO