Question: python zyDE 4 . 1 0 . 1 : Doubly linked - list data structures and algorithms. from Node import Node from LinkedList import LinkedList

python zyDE 4.10.1: Doubly linked-list data structures and algorithms.
from Node import Node
from LinkedList import LinkedList
num_list = LinkedList()
node_a = Node(14)
node_b = Node(2)
node_c = Node(20)
node_d = Node(31)
node_e = Node(16)
node_f = Node(55)
num_list.append(node_a) # Add 14
num_list.append(node_b) # Add 2, make the tail
num_list.append(node_c) # Add 20, make the tail
num_list.prepend(node_d) # Add 31, make the head
num_list.insert_after(node_b, node_e) # Insert 16 after 2
num_list.insert_after(node_c, node_f) # Insert 55 after tail, 55 becomes new tail
# Output list
print('List after adding nodes:', end='')
node = num_list.head
while node != None:
print(node.data, end='')
node = node.next
print()
num_list.remove(node_f) # Remove the tail
num_list.remove(node_d) # Remove the head
# Output final list
print('List after removing nodes:', end='')
node = num_list.head
while node != None:
print(node.data, end='')
node = node.next
print()
class Node:
def __init__(self, initial_data):
self.data = initial_data
self.next = None
self.prev = None
class LinkedList:
def __init__(self):
self.head = None
self.tail = None
def append(self, new_node):
if self.head == None:
self.head = new_node
self.tail = new_node
else:
self.tail.next = new_node
new_node.prev = self.tail
self.tail = new_node
def prepend(self, new_node):
if self.head == None:
self.head = new_node
self.tail = new_node
else:
new_node.next = self.head
self.head.prev = new_node
self.head = new_node
def insert_after(self, current_node, new_node):
if self.head is None:
self.head = new_node
self.tail = new_node
elif current_node is self.tail:
self.tail.next = new_node
new_node.prev = self.tail
self.tail = new_node
else:
successor_node = current_node.next
new_node.next = successor_node
new_node.prev = current_node
current_node.next = new_node
successor_node.prev = new_node
def remove(self, current_node):
successor_node = current_node.next
predecessor_node = current_node.prev
if successor_node is not None:
successor_node.prev = predecessor_node
if predecessor_node is not None:
predecessor_node.next = successor_node
if current_node is self.head:
self.head = successor_node
if current_node is self.tail:
self.tail = predecessor_node

Step by Step Solution

There are 3 Steps involved in it

1 Expert Approved Answer
Step: 1 Unlock blur-text-image
Question Has Been Solved by an Expert!

Get step-by-step solutions from verified subject matter experts

Step: 2 Unlock
Step: 3 Unlock

Students Have Also Explored These Related Programming Questions!