w3resource

Python Object-Oriented Programming: Linked list class with insertion, deletion, and display methods


Write a Python program to create a class representing a linked list data structure. Include methods for displaying linked list data, inserting and deleting nodes.

Sample Solution:

Python Code:

# Define a class called Node to represent a node in a linked list
class Node:
    # Initialize the Node object with data and set the next pointer to None
    def __init__(self, data):
        self.data = data
        self.next = None

# Define a class called LinkedList to represent a singly linked list
class LinkedList:
    # Initialize the linked list with an empty head node
    def __init__(self):
        self.head = None

    # Display the elements in the linked list
    def display(self):
        current = self.head
        while current:
            print(current.data, end=" ")
            current = current.next
        print()

    # Insert a new node with the given data at the end of the linked list
    def insert(self, data):
        new_node = Node(data)
        if not self.head:
            self.head = new_node
        else:
            current = self.head
            while current.next:
                current = current.next
            current.next = new_node

    # Delete a node with the given data from the linked list
    def delete(self, data):
        if not self.head:
            return

        if self.head.data == data:
            self.head = self.head.next
            return

        current = self.head
        prev = None
        while current and current.data != data:
            prev = current
            current = current.next

        if current:
            prev.next = current.next

# Example usage
# Create an instance of the LinkedList class
linked_list = LinkedList()

# Insert elements into the linked list
linked_list.insert(1)
linked_list.insert(2)
linked_list.insert(3)
linked_list.insert(4)

# Display the initial linked list
print("Initial Linked List:")
linked_list.display()

# Insert a new node with data 5 into the linked list
linked_list.insert(5)
print("After inserting a new node (5):")
linked_list.display()

# Delete a node with data 2 from the linked list
linked_list.delete(2)
print("After deleting an existing node (2):")
linked_list.display() 

Sample Output:

Initial Linked List:
1 2 3 4 
After insert a new node (4):
1 2 3 4 5 
After delete a existing node (2):
1 3 4 5

Explanation:

In this above exercise,

  • We define a Node class representing a node in the linked list. Each node contains some data and a reference to the next node (or None if it's the last node).
  • The LinkedList class represents the linked list itself. It has a head attribute that points to the first node in the list.
  • The "display()" method traverses the linked list from the head and prints the data of each node.
  • The "insert()" method inserts a new node at the end of the linked list. If the list is empty (head is None), it creates an empty node and sets it as the head.
  • The "delete()" method removes the first occurrence of a node with the specified data from the linked list. It handles the case when the node to be deleted is the head separately.
  • In the example usage section, we create an instance of the LinkedList class called linked_list. We insert several nodes into the list using the insert method. The initial linked list is then displayed using the display method.
  • We demonstrate inserting a new node into the list as well as deleting a node from the list and then display the updated list.

Flowchart:

Flowchart: Python - Function that takes a sequence of numbers and determines whether all  are different from each other
Flowchart: Python - Function that takes a sequence of numbers and determines whether all  are different from each other

Python Code Editor:

Previous: Stack class with push and pop methods.
Next: Shopping cart class with item management and total calculation.

What is the difficulty level of this exercise?

Test your Programming skills with w3resource's quiz.



Follow us on Facebook and Twitter for latest update.