Program 1
# Impelmentation of Single Linked List
# class for size of Node
class Node:
def __init__(self):
self.data=None
self.add=None
class LinkedList:
def __init__(self):
self.start=None
self.count=0
# Sort Method
def sortData(self):
if(self.start==None):
print("List is empty")
else:
prev=self.start
while(prev!=None):
next=prev.add
while(next!=None):
if(next.data<prev.data):
x=next.data
next.data=prev.data
prev.data=x
next=next.add
prev=prev.add
print("List is sorted now")
# Method for Search Data
def searchData(self):
if(self.start==None):
print("List is empty")
else:
n=int(input("Enter an element for search"))
temp=self.start
flag=0
while(temp!=None):
if(n==temp.data):
flag=1
break
temp=temp.add
if(flag==1):
print("Searching success")
else:
print("Searching not success")
#method for create list
def createList(self):
n=int(input("Enter an element"))
self.start=Node()
self.start.data=n
self.start.add=None
temp=self.start
self.count=self.count+1
ch=input("Want to continue(Y/N)")
while(ch=="Y"):
n=int(input("Enter an element"))
newnode=Node()
newnode.data=n
newnode.add=None
temp.add=newnode
temp=newnode
self.count=self.count+1
ch=input("Want to continue(Y/N)")
#method for display list
def displayList(self):
if(self.start==None):
print("List is empty")
else:
print("Elements of List: ")
temp=self.start
while(temp!=None):
print(temp.data,end=" ")
temp=temp.add
print("\nTotal Node is: ",self.count)
#method for insert node at first position
def insertFirst(self):
if(self.start==None):
print("List is empty")
else:
n=int(input("Enter an element for insert"))
newnode=Node()
newnode.data=n
newnode.add=None
newnode.add=self.start
self.start=newnode
self.count=self.count+1
#method for insert node at last position
def insertLast(self):
if(self.start==None):
print("List is empty")
else:
n=int(input("Enter an element for insert"))
newnode=Node()
newnode.data=n
newnode.add=None
temp=self.start
while(temp.add!=None):
temp=temp.add
temp.add=newnode
self.count=self.count+1
#method for insert node at middle position
def insertMiddle(self):
if(self.start==None):
print("List is empty")
else:
n=int(input("Enter an element for insert"))
newnode=Node()
newnode.data=n
newnode.add=None
pos=int(input("Enter the position"))
if(pos>self.count):
print("Invalid position")
else:
i=1
next=self.start
while(i<pos):
prev=next
next=next.add
i=i+1
prev.add=newnode
newnode.add=next
self.count=self.count+1
# Delete node from First
def deleteFirst(self):
if(self.start==None):
print("List is empty")
else:
print("Deleted node is : ",self.start.data)
self.start=self.start.add
self.count=self.count-1
# Delete node from Middle
def deleteMiddle(self):
if(self.start==None):
print("List is empty")
else:
pos=int(input("Enter the position for delete"))
if(pos>self.count):
print("Invalid position")
else:
i=1
next=self.start
while(i<pos):
prev=next
next=next.add
i=i+1
temp=next
next=next.add
prev.add=next
print("Deleted node is: ",temp.data)
temp=None
self.count=self.count-1
# Delete node from Last
def deleteLast(self):
if(self.start==None):
print("List is empty")
else:
last=self.start
while(last.add!=None):
prev=last
last=last.add
print("Deleted node is :",last.data)
prev.add=None
last=None
self.count=self.count-1
# Main Menu
mylist=LinkedList()
while(1):
print("\n--------------------------Linked List Menu-------------------------\n")
print("1.Create")
print("2.Display")
print("3.Insert First")
print("4.Insert Middle")
print("5.Insert Last")
print("6.Delete First")
print("7.Delete Middle")
print("8.Delete Last")
print("9.Searhing")
print("10.Sort the list")
print("11.Exit")
print("\n---------------------------------------------------------------------\n")
choice=int(input("Enter your choice"))
if(choice==1):
mylist.createList()
elif(choice==2):
mylist.displayList()
elif(choice==3):
mylist.insertFirst()
elif(choice==4):
mylist.insertMiddle()
elif(choice==5):
mylist.insertLast()
elif(choice==6):
mylist.deleteFirst()
elif(choice==7):
mylist.deleteMiddle()
elif(choice==8):
mylist.deleteLast()
elif(choice==9):
mylist.searchData()
elif(choice==10):
mylist.sortData()
else:
break