Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Linked Lists #11

Merged
merged 9 commits into from
Oct 2, 2024
Original file line number Diff line number Diff line change
@@ -0,0 +1,140 @@
"""
# Menu Driven Code for Circular Doubly Linked List
"""


class Node:
def __init__(self, data):
self.data = data
self.right = None
self.left = None


class LinkedList:
def __init__(self):
self.root = None
self.last = None

def insertLeft(self, data):
n = Node(data)
if self.root == None:
self.root = n
self.last = n
self.last.right = self.root
self.root.left = self.last
else:
n.right = self.root
self.root.left = n
self.root = n
self.last.right = self.root
self.root.left = self.last
print('\nInserted Element: ', self.root.data)
self.printList()

def deleteLeft(self):
if self.root == None:
print('\nLinked List is empty..!!')
else:
temp = self.root
if self.root == self.last:
self.root = None
else:
self.root = self.root.right
self.root.left = self.last
self.last.right = self.root
print('\nDeleted element: ', temp.data)
self.printList()

def insertRight(self, data):
n = Node(data)
if self.root == None:
self.root = n
self.last = n
self.last.right = self.root
self.root.left = self.last
else:
self.last.right = n
n.left = self.last
self.last = n
self.last.right = self.root
self.root.left = self.last
print('\nInserted Element: ', n.data)
self.printList()

def deleteRight(self):
if self.root == None:
print('\nLinked List is empty..!!')
else:
if self.root == self.last:
self.root = None
else:
print('Deleted Element: ', self.last.data)
self.last = self.last.left
self.last.right = self.root
self.root.left = self.last
self.printList()

def printList(self):
if self.root == None:
print('\nLinked List is empty..!!')
return
temp = self.root
print('\nElements in Linked List are: ')
while True:
print('|', temp.data, '| <-> ', end='')
temp = temp.right
if temp == self.root:
break
print('Root')
print()

def printReverseList(self):
if self.root == None:
print('\nLinked List is empty..!!')
return
temp = self.last
print('\nElements in Linked List are: ')
while True:
print('|', temp.data, '| <-> ', end='')
temp = temp.left
if temp == self.last:
break
print('Last')
print()


o = LinkedList()

while True:
print('----------------------')
print('\n1. Insert from Left\n2. Insert from Right\n3. Delete from Left\n4. Delete from Right\n5. Print Linked List\n6. Print Reverse Linked List\n0. Exit')
print('----------------------')

ch = int(input('\nEnter your choice: '))

if ch == 1:
data = int(input('\nEnter value to be inserted in left: '))
o.insertLeft(data)

elif ch == 2:
data = int(input('\nEnter value to be inserted in right: '))
o.insertRight(data)

elif ch == 3:
o.deleteLeft()

elif ch == 4:
o.deleteRight()

elif ch == 5:
o.printList()

elif ch == 6:
o.printReverseList()

elif ch == 0:
print('You are out of the program..!!')
break

else:
print('\nWrong Input..\nEnter the correct choice..!!\n')
Original file line number Diff line number Diff line change
@@ -0,0 +1,109 @@


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


class LinkedList:
def __init__(self):
self.root = None
self.last = None

def insertLeft(self, data):
n = Node(data)
if self.root == None:
self.root = n
self.last = n
self.last.next = self.root
else:
n.next = self.root
self.root = n
self.last.next = self.root

def deleteLeft(self):
if self.root == None:
print('\nLinked List is empty..!!')
else:
temp = self.root
if self.root == self.last:
self.last = self.root = None
else:
self.root = self.root.next
self.last.next = self.root
print('\nDeleted element: ', temp.data)

def insertRight(self, data):
n = Node(data)
if self.root == None:
self.root = n
self.last = n
self.last.next = self.root
else:
self.last.next = n
self.last = n
self.last.next = self.root

def deleteRight(self):
if self.root == None:
print('\nLinked List is empty..!!')
else:
if self.root == self.last:
self.root = self.last = None
else:
temp = self.root
temp2 = self.root
while temp.next != self.root:
temp2 = temp
temp = temp.next
self.last = temp2
temp2.next = self.root
print('\nDeleted element: ', temp.data)

def printList(self):
if self.root == None:
print('\nLinked List is empty..!!')
temp = self.root
print('\nElements in Linked List are: ')
while True:
print('|', temp.data, '| -> ', end='')
temp = temp.next
if temp == self.root:
break
print('None')
print()


o = LinkedList()

while True:
print('----------------------')
print('\n1. Insert from Left\n2. Insert from Right\n3. Delete from Left\n4. Delete from Right\n5. Print Linked List\n0. Exit')
print('----------------------')

ch = int(input('\nEnter your choice: '))

if ch == 1:
data = int(input('\nEnter value to be inserted in left: '))
o.insertLeft(data)

elif ch == 2:
data = int(input('\nEnter value to be inserted in right: '))
o.insertRight(data)

elif ch == 3:
o.deleteLeft()

elif ch == 4:
o.deleteRight()

elif ch == 5:
o.printList()

elif ch == 0:
print('You are out of the program..!!')
break

else:
print('\nWrong Input..\nEnter the correct choice..!!\n')
Original file line number Diff line number Diff line change
@@ -0,0 +1,127 @@


class Node:
def __init__(self, data):
self.data = data
self.right = None
self.left = None


class LinkedList:
def __init__(self):
self.root = None
self.last = None

def insertLeft(self, data):
n = Node(data)
if self.root == None:
self.root = n

else:
n.right = self.root
self.root.left = n
self.root = n

def deleteLeft(self):
if self.root == None:
print('\nLinked List is empty..!!')
else:
temp = self.root
if self.root.right == self.root.left == None:
self.root = None
else:
self.root = self.root.right
print('Deleted: ', temp.data)

def insertRight(self, data):
n = Node(data)
if self.root == None:
self.root = n
else:
temp = self.root
while temp.right != None:
temp = temp.right
temp.right = n
n.left = temp
n.right = None
print('Inserted Element: ', n.data)

def deleteRight(self):
if self.root == None:
print('\nLinked List is empty..!!')
else:
if self.root.right == self.root.left:
self.root = None
else:
temp = self.root
while temp.right != None:
temp = temp.right
print('\nDeleted: ', temp.data)
temp = temp.left
temp.right = None

def printList(self):
if self.root == None:
print('\nLinked List is empty..!!')
return
else:
temp = self.root
print('Elements of linked list are: ')
while temp != None:
print('|', temp.data, ' <-> ', end=" ")
temp = temp.right
print('None')
print('')

def printListReverse(self):
if self.root == None:
print('\nLinked List is empty..!!')
return
else:
temp = self.root
print('Elements of linked list are: ')
while temp.right != None:
temp = temp.right
while temp != None:
print('|', temp.data, ' <-> ', end=" ")
temp = temp.left

print('None')
print('')


o = LinkedList()

while True:
print('----------------------')
print('\n1. Insert from Left\n2. Insert from Right\n3. Delete from Left\n4. Delete from Right\n5. Print Linked List\n6. Print Reverse Linked List\n0. Exit')
print('----------------------')

ch = int(input('\nEnter your choice: '))

if ch == 1:
data = int(input('\nEnter value to be inserted in left: '))
o.insertLeft(data)

elif ch == 2:
data = int(input('\nEnter value to be inserted in right: '))
o.insertRight(data)

elif ch == 3:
o.deleteLeft()

elif ch == 4:
o.deleteRight()

elif ch == 5:
o.printList()

elif ch == 6:
o.printListReverse()

elif ch == 0:
print('You are out of the program..!!')
break

else:
print('\nWrong Input..\nEnter the correct choice..!!\n')
Loading