Friday, October 25, 2024

Doubly Linked List Python

 


# singly linked list

class Node:
  def __init__(self,data):
    self.data = data
    self.prev = None
    self.next = None

class dl:
  def __init__(self):
    self.head = None
    self.tail = None
 
  def is_empty(self):
    return self.head is None
 
  def insertb(self,value):
    new_node = Node(value)
    if self.is_empty():
      self.head = self.tail = new_node
    else:
      new_node.next = self.head
      self.head.prev = new_node
      self.head = new_node
 
  def inserte(self,value):
    new_node = Node(value)
    if self.is_empty():
      self.head = self.tail = new_node
    else:
      new_node.prev = self.tail
      self.tail.next = new_node
      self.tail = new_node
 
  def forward(self):
    current = self.head
    while current:
      if current.data != None:
        print(current.data,'<->',end='')
      current = current.next
    print()

  def backward(self):
    current = self.tail
    while current:
      if current.data != None:
        print(current.data,'<->',end='')
      current = current.prev
    print()

  def delete(self,value):
    current = self.head
    while current:
      if current.data != None and current.data == value:
        current.data = None
      current = current.next
    print("deleted...")
    self.forward()
    self.backward()
    self.size()
 
  def update(self,value,replace):
    current = self.head
    while current:
      if current.data != None and current.data == value:
        current.data = replace
      current = current.next
    print("updated...")
    self.forward()
    self.backward()
   
  def size(self):
    current = self.head
    size=0
    while current:
      if current.data != None :
        size += 1
      current = current.next
    print(f"size is {size}...!")
 
l = dl()
l.insertb(1)
l.insertb(2)
l.insertb(3)
l.inserte(4)
l.inserte(5)
l.delete(1)
l.update(2,22)

No comments:

Post a Comment

virtual environment on python on Ubuntu

 # 1. Update system and install Python tools sudo apt update && sudo apt install python3-pip python3-venv -y # 2. Setup Django in a ...