Skip to content

Instantly share code, notes, and snippets.

@egamble
Created March 26, 2015 23:33
Show Gist options
  • Save egamble/25486a259a5a69dc236a to your computer and use it in GitHub Desktop.
Save egamble/25486a259a5a69dc236a to your computer and use it in GitHub Desktop.
Reverse a singly-linked list.
class List:
def __init__(self, data, next):
self.data = data
self.next = next
def __repr__(self):
return 'List({0.data!r}, {0.next!r})'.format(self)
def str_helper(self):
if self.next == None:
return '{0.data!s}'.format(self)
else:
return '{0.data!s}, {1}'.format(self, self.next.str_helper())
def __str__(self):
return '({0!s})'.format(self.str_helper())
def reverse(head):
prev = None
while head != None:
save_next = head.next
head.next = prev
prev = head
head = save_next
return prev
def reverse2(head):
prev = None
while head != None:
save_head = head
head = head.next
save_head.next = prev
prev = save_head
return prev
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment