Created
May 23, 2019 08:03
-
-
Save xxbinxx/9723d5c269ef7e8b7adc1db148c3ef7d to your computer and use it in GitHub Desktop.
linklist implemented using python + Test cases
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
class Element(object): | |
def __init__(self, value): | |
self.value = value | |
self.next = None | |
class LinkedList(object): | |
def __init__(self, head=None): | |
self.head = head | |
def append(self, new_element): | |
current = self.head | |
if self.head: | |
while current.next: | |
current = current.next | |
current.next = new_element | |
else: | |
self.head = new_element | |
def get_position(self, position): | |
counter = 1 | |
current = self.head | |
if position < 1: | |
return None | |
while current and counter <= position: | |
if counter == position: | |
return current | |
current = current.next | |
counter += 1 | |
return None | |
def insert(self, new_element, position): | |
counter = 1 | |
current = self.head | |
if position > 1: | |
while current and counter < position: | |
if counter == position - 1: | |
new_element.next = current.next | |
current.next = new_element | |
current = current.next | |
counter += 1 | |
elif position == 1: | |
new_element.next = self.head | |
self.head = new_element | |
def delete(self, value): | |
current = self.head | |
previous = None | |
while current.value != value and current.next: | |
previous = current | |
current = current.next | |
if current.value == value: | |
if previous: | |
previous.next = current.next | |
else: | |
self.head = current.next | |
def display(self): | |
print "*" * 10 | |
current = self.head | |
print self.head.value | |
while current.next: | |
current = current.next | |
print current.value | |
print "*" * 10 | |
# Test cases | |
# Set up some Elements | |
e1 = Element(1) | |
e2 = Element(2) | |
e3 = Element(3) | |
e4 = Element(4) | |
# Start setting up a LinkedList | |
ll = LinkedList(e1) | |
ll.append(e2) | |
ll.append(e3) | |
# Test get_position | |
# Should print 3 | |
print ll.head.next.next.value | |
# Should also print 3 | |
print ll.get_position(3).value | |
# Test insert | |
ll.insert(e4, 3) | |
# Should print 4 now | |
print ll.get_position(3).value | |
ll.display() | |
# Test delete | |
ll.delete(1) | |
# Should print 2 now | |
print ll.get_position(1).value | |
# Should print 4 now | |
print ll.get_position(2).value | |
# Should print 3 now | |
print ll.get_position(3).value |
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment