Skip to main content
edited tags
Link
AlexV
  • 7.3k
  • 2
  • 24
  • 47
Source Link

Singly linked list implementation in python 3

I have implemented a Singly linked list. It works well. But if you think something needs to be improved, say it. This code was tested in Python 3.7.4.

class Node(object):

    def __init__(self, data):
        self.data = data
        self.nextNode = None
    
class LinkedList(object):

    def __init__(self):
        self.head = None
        self.size = 0
        
    # O(1) !!!  
    def insertStart(self, data):
    
        self.size = self.size + 1
        newNode = Node(data)
        
        if not self.head:
            self.head = newNode
        else:
            newNode.nextNode = self.head
            self.head = newNode
            
    def remove(self, data):
    
        if self.head is None:
            return
            
        self.size = self.size - 1
        
        currentNode = self.head
        previousNode = None
        
        while currentNode.data != data:
            previousNode = currentNode
            currentNode = currentNode.nextNode
            
        if previousNode is None:
            self.head = currentNode.nextNode
        else:
            previousNode.nextNode = currentNode.nextNode            
        
    # O(1)  
    def size1(self):
        return self.size
        
    
    # O(N)
    def insertEnd(self, data):
    
        self.size = self.size + 1
        newNode = Node(data)
        actualNode = self.head
        
        while actualNode.nextNode is not None:
            actualNode = actualNode.nextNode
            
        actualNode.nextNode = newNode
        
    def traverseList(self):
    
        actualNode = self.head
        
        while actualNode is not None:
            print(actualNode.data)
            actualNode = actualNode.nextNode