Delete node

You have been given a linked list of integers. Your task is to write a function that deletes a node from a given position, 'pos'.

Note :
Assume that the Indexing for the linked list always starts from 0.

If the position is greater than or equal to the length of the linked list, you should return the same linked list without any change.
Illustration :
The following images depict how the deletion has been performed.

Image-I :

Alt txt

Image-II :

Alt txt

Input format :
The first line contains an Integer 't' which denotes the number of test cases or queries to be run. Then the test cases follow.

The first line of each test case or query contains the elements of the linked list separated by a single space. 

The second line of each test case contains the integer value of 'pos'. It denotes the position in the linked list from where the node has to be deleted.
 Remember/Consider :
While specifying the list elements for input, -1 indicates the end of the singly linked list and hence, would never be a list element
Output format :
For each test case/query, print the resulting linked list of integers in a row, separated by a single space.

Output for every test case will be printed in a separate line.
You don't need to print explicitly, it has been taken care of.
Constraints :
1 <= t <= 10^2
0 <= N <= 10^5
pos >= 0
Time Limit: 1sec

Where 'N' is the size of the singly linked list.
Sample Input 1 :
1 
3 4 5 2 6 1 9 -1
3
Sample Output 1 :
3 4 5 6 1 9
Sample Input 2 :
2
3 4 5 2 6 1 9 -1
0
10 20 30 40 50 60 -1
7
Sample Output 2 :
4 5 2 6 1 9
10 20 30 40 50 60
class LinkedListNode:
def __init__(self,data):
self.data=data
self.next=None
class LinkedList:
def __init__(self):
self.head = None
self.tail=None
def inputLL(self,arr):
if len(arr)==0:
return
for i in arr:
if i is -1:
return
NewNode=LinkedListNode(i)
if self.head is None:
self.head=NewNode
self.tail=NewNode
else:
self.tail.next=NewNode
self.tail=NewNode
def deleteLL(self,data):
temp=self.head
if temp.data==data:
self.head=temp.next
temp=None
return
while temp is not None:
if temp.data==data:
break
prev=temp
temp=temp.next
prev.next=temp.next
temp=None
def printLL(self):
while self.head is not None:
print(self.head.data,end=" ")
self.head=self.head.next
print()
arr=list(map(int,input().split())) #Example: 1,2,3,4,5
l=LinkedList()
l.inputLL(arr)
l.deleteLL(2)
l.printLL()
view raw Delete node.py hosted with ❤ by GitHub

Comments

Popular posts from this blog

MySQL Multi Source Master Slave Replication using GTID

Setting Up PostgreSQL Logical Replication with Docker Compose

Access and modify all the resources of our Wiki.js using WikiJS API