Polish linked list challenge and solution

Update algorithm discussion, solution, and constraints.
This commit is contained in:
Donne Martin
2016-06-12 23:29:58 -04:00
parent 1e9ffd3f33
commit 58409ac286
3 changed files with 88 additions and 65 deletions

View File

@@ -1,7 +1,7 @@
class Node(object):
def __init__(self, data, next_node=None):
self.next = next_node
def __init__(self, data, next=None):
self.next = next
self.data = data
def __str__(self):
@@ -23,40 +23,35 @@ class LinkedList(object):
def insert_to_front(self, data):
if data is None:
return
node = Node(data)
if self.head is None:
self.head = node
else:
node.next = self.head
self.head = node
return None
node = Node(data, self.head)
self.head = node
return node
def append(self, data, next_node=None):
def append(self, data):
if data is None:
return
node = Node(data, next_node)
return None
node = Node(data)
if self.head is None:
self.head = node
else:
curr_node = self.head
while curr_node.next is not None:
curr_node = curr_node.next
curr_node.next = node
self.head = Node(data)
return node
curr_node = self.head
while curr_node.next is not None:
curr_node = curr_node.next
curr_node.next = node
return node
def find(self, data):
if data is None:
return
return None
if self.head is None:
return
return None
curr_node = self.head
while curr_node is not None:
if curr_node.data == data:
return curr_node
else:
curr_node = curr_node.next
return
curr_node = curr_node.next
return None
def delete(self, data):
if data is None:
@@ -73,6 +68,21 @@ class LinkedList(object):
prev_node = curr_node
curr_node = curr_node.next
def delete_alt(self, data):
if data is None:
return
if self.head is None:
return
curr_node = self.head
if curr_node.data == data:
curr_node = curr_node.next
return
while curr_node.next is not None:
if curr_node.next.data == data:
curr_node.next = curr_node.next.next
return
curr_node = curr_node.next
def print_list(self):
curr_node = self.head
while curr_node is not None: