In: Computer Science
PYTHON-- how do i change these linkedlist methods into doublylinkedlist methods? A doublylinked list is the same as a linked list, except that each node has a reference to the node after it(next) and the node before it(prev).
#adds item to the head of list.
def add(self, item):
node = Node(item, self.head)
self.head = node
if self.size == 0:
self.tail = node
self.size += 1
#appends item to tail of list
def append(self, item):
node = Node(item)
tail = self.head
node.next = None
if self.size == 0:
node.prev = None
self.head = node
return
while tail.next is not None:
tail = tail.next
tail.next = node
node.prev = tail
self.size += 1
#removes the node at position pos. returns node's data
#make pop O(1)
def pop(self, pos=None):
current = self.head
previous = None
i = 0
while current != None and i != pos:
previous = current
current = current.next
i += 1
if current == self.tail:
previous.next = None
self.tail = previous
self.size -= 1
return current.data
elif prev is None:
if self.size == 1:
self.tail = None
self.head = current.next
self.size -= 1
return current.data
else:
previous.next = current.next
self.size -= 1
return current.data
PLEASE GIVE IT A THUMBS UP, I SERIOUSLY NEED ONE, IF YOU NEED ANY MODIFICATION THEN LET ME KNOW, I WILL DO IT FOR YOU

class Node:
def __init__(self, item):
self.item = item
self.next = None
self.prev = None
class DoubleLinkedList:
def __init__(self):
self.dllnode = None
# adds item to the head of list
def add(self, item):
if(self.dllnode == None):
new_node = Node(item)
self.dllnode = new_node
new_node = Node(item)
new_node.next = self.dllnode
self.dllnode.prev = new_node
self.dllnode = new_node
# adds item to the end of list
def append(self, item):
new_node = Node(item)
new_node.next = None
if self.dllnode is None:
new_node.prev = None
self.dllnode = new_node
return
temp = self.dllnode
if temp.next is not None:
temp = temp.next
temp.next = new_node
new_node.prev = temp
# print list
def printList(self):
while(self.dllnode is not None):
print(self.dllnode.item, end="->")
self.dllnode = self.dllnode.next
# removes the node at position pos return node data
def pop(self, pos):
if(self.dllnode is None):
return
cur = self.dllnode
i = 1
while(cur != None and i != pos):
cur = cur.next
i = i+1
if(cur == None):
return
# node to be deleted
if(self.dllnode == None or cur == None):
return
# if the node is the first or head node
if(self.dllnode == cur):
self.dllnode = cur.next
# if the node is the last node
if(cur.next is not None):
cur.next.prev = cur.prev
if(cur.prev is not None):
cur.prev.next = cur.next
return self.dllnode.item
node = DoubleLinkedList()
node.add(20)
node.add(30)
node.append(50)
print(node.pop(2))
print(node.printList())