# 1. Introduction

A linked list is a foundational data structure where elements, known as nodes, are connected linearly. Each node contains its data and a reference (or link) to the next node in the sequence. The primary advantage of linked lists over traditional arrays is that the former allows for efficient insertions and deletions because they don't need to shift elements around.

# 2. Program Overview

In this post, we'll create a basic singly linked list. We will implement the following operations:

1. append: Adds a new node at the end of the list.

2. display: Shows all the elements of the linked list.

3. is_empty: Checks if the linked list is empty.

4. length: Returns the number of elements in the linked list.

# 3. Code Program

``````class Node:
def __init__(self, data):
"""Initialize the node with data and no reference to the next node."""
self.data = data
self.next = None

def __init__(self):

def append(self, data):
"""Add a new node with the given data at the end of the list."""
new_node = Node(data)
return
while last_node.next:
last_node = last_node.next
last_node.next = new_node

def display(self):
"""Print all the elements of the linked list."""
while curr_node:
print(curr_node.data, end=" -> ")
curr_node = curr_node.next
print("None")

def is_empty(self):
"""Check if the linked list is empty."""

def length(self):
"""Return the number of elements in the linked list."""
count = 0
while curr_node:
count += 1
curr_node = curr_node.next
return count

# Demonstration
print("is_empty:", llist.is_empty())  # True
llist.append(5)
llist.append(10)
llist.append(15)
llist.display()  # 5 -> 10 -> 15 -> None
print("length of the linked list:",llist.length())  # 3
``````

### Output:

```is_empty: True
5 -> 10 -> 15 -> None
length of the linked list: 3
```

# 4. Step By Step Explanation

1. The Node class represents an individual node of the linked list. It contains data and a reference to the next node (initialized as None).

2. The LinkedList class defines the operations we can perform on the linked list. Its head attribute points to the first node of the linked list.

3. The append method allows us to add a node at the end of the list.

4. The display method lets us visualize the list, printing each element followed by an arrow, culminating in None.

5. The is_empty method returns a boolean indicating whether the list is empty or not.

6. The length method gives the number of nodes in the list.

# My Top and Bestseller Udemy Courses

Check out all my Udemy courses and updates: