In [10]:
class Node:
def __init__(self, data = None, next = None):
self.data = data
self.next = next
def __str__(self):
return str(self.data)
In [63]:
class LinkedList:
def __init__(self):
self.head = None
self.tail = None
def insert(self, node):
if not self.isEmpty():
self.tail.next = node
else:
self.head = node
self.tail = node
def remove(self):
if not self.isEmpty():
data = self.head.data
self.head = self.head.next
if self.head is None:
self.tail = None
return data
return None
def isEmpty(self):
return self.head == None
def printList(self):
cur = self.head
print("[",end="")
while cur:
print(cur,end="")
if cur.next:
print(",",end="")
cur = cur.next
print("]")
def printBackwards(self):
print("[",end="")
self._printBackwards(self.head)
print("]")
def _printBackwards(self, node):
if node:
self._printBackwards(node.next)
if node.next:
print(",",end="")
print(node,end="")
In [64]:
myList = LinkedList()
myList.insert(Node("first"))
myList.insert(Node("second"))
myList.insert(Node("third"))
myList.printList()
myList.printBackwards()
In [ ]: