Skip to content

Instantly share code, notes, and snippets.

@xfenix
Last active May 24, 2016 13:25
Show Gist options
  • Save xfenix/00bf83665f1c3bec6cd8deae5ce3ac39 to your computer and use it in GitHub Desktop.
Save xfenix/00bf83665f1c3bec6cd8deae5ce3ac39 to your computer and use it in GitHub Desktop.
Simple python Linked List implementation
class Node:
def __init__(self, value, next_item=None):
self.value = value
self.next = next_item
class LinkedList:
storage = []
def __init__(self):
self.first = None
self.last = None
self.length = 0
def __str__(self):
self.values = []
self.iter(lambda _, current: self.values.append(str(current.value)))
if self.length:
return ' -> '.join(self.values)
else:
return 'Empty list'
def iter(self, callback):
prev = None
current = self.first
while True:
callback(prev, current)
if current.next != None:
prev = current
current = current.next
else:
break
return current
def add(self, value):
self.length += 1
if not self.first:
self.first = self.last = Node(value)
else:
item = self.first
while item.next != None:
item = item.next
item.next = self.last = Node(value)
def remove(self, value):
def remove(prev, current):
self.length -= 1
if current.value == value:
if prev:
prev.next = current.next
else:
if current.next:
self.first = current.next
else:
self.first = self.last = None
self.iter(remove)
a = LinkedList()
a.add(1)
a.add(2)
a.add(3)
a.add(10)
print a
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment