C Program to Insert a Node at the End of a Linked List

Introduction

A linked list is a dynamic data structure where each element, called a node, contains a data part and a pointer to the next node. To insert a node at the end of a linked list, you need to traverse the list to the last node and then update the last node’s pointer to point to the new node.

Example:

  • Input: A linked list with nodes containing [10, 20, 30], and a new node with data 40.
  • Output: The linked list after insertion will contain [10, 20, 30, 40].

Problem Statement

Create a C program that:

  • Creates a singly linked list.
  • Inserts a node at the end of the linked list.
  • Displays the linked list after the insertion.

Solution Steps

  1. Include the Standard Libraries: Use #include <stdio.h> and #include <stdlib.h> for standard input-output functions and dynamic memory allocation.
  2. Define the Node Structure: Create a structure for the node containing an integer data part and a pointer to the next node.
  3. Implement the Function to Insert a Node at the End: Write a function that traverses the linked list to the last node and inserts a new node at the end.
  4. Implement the Function to Display the Linked List: Write a function to traverse and display the elements of the linked list.
  5. Create a Main Function: In the main() function, create the linked list, insert nodes at the end, and display the list.

C Program to Insert a Node at the End of a Linked List

#include <stdio.h> #include <stdlib.h> // Step 2: Define the Node Structure struct Node { int data; struct Node* next; }; // Function to insert a node at the end of the linked list void insertAtEnd(struct Node** head_ref, int new_data) { struct Node* new_node = (struct Node*)malloc(sizeof(struct Node)); struct Node* last = *head_ref; new_node->data = new_data; new_node->next = NULL; // If the linked list is empty, make the new node the head if (*head_ref == NULL) { *head_ref = new_node; return; } // Otherwise, traverse to the last node while (last->next != NULL) { last = last->next; } // Change the next of the last node to point to the new node last->next = new_node; } // Function to display the linked list void displayList(struct Node* node) { while (node != NULL) { printf("%d -> ", node->data); node = node->next; } printf("NULL\n"); } int main() { struct Node* head = NULL; // Insert elements at the end insertAtEnd(&head, 10); insertAtEnd(&head, 20); insertAtEnd(&head, 30); insertAtEnd(&head, 40); // Display the linked list printf("Linked List: "); displayList(head); return 0; // Return 0 to indicate successful execution } 

Explanation

Step 2: Define the Node Structure

  • The Node structure contains two members: an integer data to store the node’s data, and a pointer next to point to the next node in the list.

Function to Insert a Node at the End

  • The insertAtEnd function takes a double pointer to the head of the linked list (head_ref) and the data to be inserted (new_data).
  • A new node is allocated dynamically using malloc().
  • If the linked list is empty, the new node is made the head of the list.
  • Otherwise, the function traverses the list to the last node and updates the last node’s next pointer to point to the new node.

Function to Display the Linked List

  • The displayList function traverses the linked list from the head and prints each node’s data, followed by an arrow (->), until it reaches the end (NULL).

Main Function

  • The main function creates an empty linked list and inserts several nodes at the end using the insertAtEnd function.
  • After the nodes are inserted, the displayList function is called to display the linked list.

Output Example

Example Output:

Linked List: 10 -> 20 -> 30 -> 40 -> NULL 

Conclusion

This C program demonstrates how to insert a node at the end of a linked list. It covers basic concepts such as dynamic memory allocation, pointer manipulation, and linked list traversal, making it a useful example for beginners learning data structures in C programming.

Leave a Comment

Scroll to Top