Skip to content

Instantly share code, notes, and snippets.

@kai5263499
Created October 19, 2014 15:49
Show Gist options
  • Save kai5263499/061159ecf7f716fa4b63 to your computer and use it in GitHub Desktop.
Save kai5263499/061159ecf7f716fa4b63 to your computer and use it in GitHub Desktop.
Simple linked list implementation in Python
# From http://interactivepython.org/LpOMZ/courselib/static/pythonds/BasicDS/linkedlists.html
class Node:
def __init__(self,initdata):
self.data = initdata
self.next = None
class LinkedList:
def __init__( self ):
self.head = None
self.tail = None
def add(self,data):
new_node=Node(data)
if self.head == None:
self.head = new_node
if self.tail != None:
self.tail.next = new_node
self.tail = new_node
def reverseList(self):
if self.head == None or self.head.next == None:
return self.head
to_do = self.head.next
reversed_list = self.head
reversed_list.next = None
self.tail = reversed_list
while to_do != None:
temp = to_do
to_do = to_do.next
temp.next = reversed_list
reversed_list = temp
self.head = reversed_list
def recursiveReverse(self, node):
if node == None or node.next == None:
return node
reversed_list = self.recursiveReverse(node.next)
node.next.next = node
node.next = None
return reversed_list
def printList(self):
node = self.head
while node != None:
print node.data
node = node.next
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment