Tuesday, August 6, 2024

Singly Linked List Code (Answer)

Follow me

Link of SLL Chapter: SLL

Link of SLL Code Question: SLL Code Question Link


Singly Linked List Code (Answer)

(Creating a node)
👇
class Node:
    def __init__(self, items=None, next=None):
        self.items=items
        self.next=next

(Creating a Singly Linked List Code)
👇
class SLL:
    def __init__(self, start=None):
        self.start=start
    def is_empty(self):
        return self.start==None
    def insert_at_start(self,data):
        n=Node(data,self.start)
        self.start=n
    def insert_at_last(self,data):
        n=Node(data)
        if not self.is_empty():
            temp=self.start
            while temp.next is not None:
                temp=temp.next
            temp.next=n
        else:
            self.start=n
    def search(self,data):
        temp=self.start
        while temp is not None:
            if temp.items==data:
                return temp
            temp=temp.next
        return None
    def insert_after(self,temp,data):
        if temp is not None:
            n=Node(data,temp.next)
            temp.next=n
    def print_list(self):
        temp=self.start
        while temp is not None:
            print(temp.items,end=' ')
            temp=temp.next
    def delete_first(self):
        if self.start is not None:
            self.start=self.start.next
    def delete_last(self):
        if self.start is None:
            pass
        elif self.start.next is None:
            self.start=None
        else:
            temp=self.start
            while temp.next.next is not None:
                temp=temp.next
            temp.next=None
    def delete_item(self,data):
        if self.start is None:
            pass
        elif self.start.next is None:
            if self.start.items==data:
                self.start=None
        else:
            temp=self.start
            if temp.items==data:
                self.start=temp.next
            else:
                while temp.next is not None:
                    if temp.next.items==data:
                        temp.next=temp.next.next
                        break
                    temp=temp.next
    def __iter__(self):
        return SLLiterator(self.start)
class SLLiterator:
    def __init__(self,start):
        self.current=start
    def __iter__(self):
        return self
    def __next__(self):
        if not self.current:
            raise StopIteration
        data=self.current.items
        self.current=self.current.next
        return data

mylist=SLL()
mylist.insert_at_start(20)
mylist.insert_at_start(40)
mylist.insert_at_start(60)
mylist.insert_at_last(80)
mylist.insert_at_last(100)
mylist.insert_at_last(120)
mylist.delete_first()
mylist.print_list()

for x in mylist:
    print(x,end=' ')

No comments:

Post a Comment

Recursion in DSA using Python

Follow me If you want to understand with  Graphical Representation   click on it. You can find the explanatory video at the bottom of this p...