Make Copy of Linked List in Python (2 Examples)

In this tutorial, you’ll learn how to make a copy of a linked list in Python. A linked list is a data structure where each element (node) contains a value and a reference to the next node. We’ll explore different methods to create a copy of a linked list.

The table of contents is structured as follows:

Let’s dive into it!

Initializing Sample Linked List and Importing Modules

Firstly, we will import the copy module, then we will define a linked list. To do that, we will implement a basic Node class. Afterward, we will create a couple of nodes and link them to each other.

import copy
 
class Node:
    def __init__(self, value):
        self.value = value
        self.next = None
 
# Linked List
head = Node(1)
second = Node(2)
third = Node(3)
 
head.next = second
second.next = third

Example 1: Creating Shallow Copy

The first example involves creating a shallow copy of a linked list. Here’s how it works:

# Shallow copy
new_head = head
 
# Print original linked list
current_node = head
while current_node:
    print(current_node.value)
    current_node = current_node.next
    # 1
    # 2
    # 3
 
# Print shallow copy
current_node = new_head
while current_node:
    print(current_node.value)
    current_node = current_node.next
    # 1
    # 2
    # 3
 
# Deleting a node from original linked list
head.next = third
 
# Print original linked list
current_node = head
while current_node:
    print(current_node.value)
    current_node = current_node.next
    # 1
    # 3
 
# Print shallow copy
current_node = new_head
while current_node:
    print(current_node.value)
    current_node = current_node.next
    # 1
    # 3

In this example, we define a Node class to represent each element of the linked list. We create a linked list with three nodes and set the references accordingly. To create a shallow copy, we assign the head node to a new variable new_head. Both variables point to the same memory location, so any modification to one will reflect in the other. When we delete a node from the original linked list, it affects both the original and shallow copy.

Example 2: Creating Deep Copy

The second example demonstrates creating a deep copy of a linked list. Since our initial linked list was modified, we will first re-initialize it, then perform the deepcopy operation Here’s the example:

# Re-initializing the Linked List
head = Node(1)
second = Node(2)
third = Node(3)
 
head.next = second
second.next = third
 
# Deep copy
new_head = copy.deepcopy(head)
 
# Print original linked list
current_node = head
while current_node:
    print(current_node.value)
    current_node = current_node.next
    # 1
    # 2
    # 3
 
# Print deep copy
current_node = new_head
while current_node:
    print(current_node.value)
    current_node = current_node.next
    # 1
    # 2
    # 3
 
# Deleting a node from original linked list
head.next = third
 
# Print original linked list
current_node = head
while current_node:
    print(current_node.value)
    current_node = current_node.next
    # 1
    # 3
 
# Print deep copy
current_node = new_head
while current_node:
    print(current_node.value)
    current_node = current_node.next
    # 1
    # 2
    # 3

In this example, we use the deepcopy() function from the copy module to create a deep copy of the linked list. The deep copy creates a new linked list with separate nodes, so the modifications to one list don’t affect the other. Even after deleting a node from the original linked list, the deep copy remains unchanged.

Video, Further Resources & Summary

Do you need more explanations on making a copy of a linked list in Python? Then you should have a look at the following YouTube video of the Statistics Globe YouTube channel.

The YouTube video will be added soon.

Furthermore, you could have a look at some of the other tutorials on Statistics Globe:

This post has shown how to make a copy of a linked list in Python using both shallow and deep copy methods. In case you have further questions, you may leave a comment below.

 

Ömer Ekiz Python Programming & Informatics

This page was created in collaboration with Ömer Ekiz. Have a look at Ömer’s author page to get more information about his professional background, a list of all his tutorials, as well as an overview of his other tasks on Statistics Globe.

 

Subscribe to the Statistics Globe Newsletter

Get regular updates on the latest tutorials, offers & news at Statistics Globe.
I hate spam & you may opt out anytime: Privacy Policy.


Leave a Reply

Your email address will not be published. Required fields are marked *

Fill out this field
Fill out this field
Please enter a valid email address.

Top