Node
classinit
methodclass Node(object):
def __init__(self, data, next=None):
self.data = data
self.next = next
LinkedList
class__init__
methodclass LinkedList(object):
def __init__(self, head=None, tail=None):
self.head = None
self.tail = None
print_list
methodclass LinkedList(object):
# ...
def print_list(self):
print('List Values: ')
# Start at the head
current_node = self.head
# Iterate until current node is None
while current_node != None:
# Print node data
print(current_node.data)
# Move to the next node
current_node = current_node.next
print(None)
append
methodclass LinkedList(object):
# ...
def append(self, data):
node = Node(data, None)
# Handle empty case
if self.head is None:
self.head = node
self.tail = node
else:
# Otherwise set a new next node for the tail
self.tail.next = node
# Set a new tail
self.tail = node
remove
methodclass LinkedList(object):
# ...
def remove(self, node_value):
# Keep track of current and previous node
current_node = self.head
previous_node = None
# Iterate through list to find value to be removed
while current_node != None:
if current_node.data == node_value:
if previous_node is not None:
previous_node.next = current_node.next
else:
# Handle edge case
self.head = current_node.next
previous_node = current_node
current_node = current_node.next
insert
methodclass LinkedList(object):
# ...
def insert(self, value, at):
current_node = self.head
new_node = Node(value)
# Iterate to find value after which to insert new node
while current_node != None:
if current_node.data == at:
if current_node is not None:
new_node.next = current_node.next
current_node.next = new_node
else:
# Handle edge case
self.tail = current_node.next
# Move to the next node
current_node = current_node.next
class Node(object):
def __init__(self, data, next=None):
self.data = data
self.next = next
class LinkedList(object):
def __init__(self, head=None, tail=None):
self.head = None
self.tail = None
def print_list(self):
print('List Values: ')
# Start at the head
current_node = self.head
# Iterate until current node is None
while current_node != None:
# Print node data
print(current_node.data)
# Move to the next node
current_node = current_node.next
def append(self, data):
node = Node(data, None)
# Handle empty case
if self.head is None:
self.head = node
self.tail = node
else:
# Otherwise set a new next node for the tail
self.tail.next = node
# Set a new tail
self.tail = node
def remove(self, node_value):
# Keep track of current and previous node
current_node = self.head
previous_node = None
# Iterate through list to find value to be removed
while current_node != None:
if current_node.data == node_value:
if previous_node is not None:
previous_node.next = current_node.next
else:
# Handle edge case
self.head = current_node.next
previous_node = current_node
current_node = current_node.next
def insert(self, value, at):
current_node = self.head
new_node = Node(value)
# Iterate to find value after which to insert new node
while current_node != None:
if current_node.data == at:
if current_node is not None:
new_node.next = current_node.next
current_node.next = new_node
else:
# Handle edge case
self.tail = current_node.next
# Move to the next node
current_node = current_node.next
my_list = LinkedList()
my_list.append(1)
my_list.append(2)
my_list.append(3)
my_list.append(4)
my_list.append(5)
my_list.print_list()
List Values:
1
2
3
4
5
my_list.remove(2)
my_list.remove(4)
my_list.insert(7, at=5)
my_list.print_list()
List Values:
1
3
5
7