Program To Reverse Elements Singly Linked List

Description

Plain text
Copy to clipboard
Open code in new window
EnlighterJS 3 Syntax Highlighter
To Reverse elements of singly linked list -
Case 1: Check if list is empty
Show message that list is empty.
Case 2: If list has elements
Recursively the call the reverse function to reverse the elements
Note: Here head contains the address of first node
To Reverse elements of singly linked list - Case 1: Check if list is empty Show message that list is empty. Case 2: If list has elements Recursively the call the reverse function to reverse the elements Note: Here head contains the address of first node
To Reverse elements of singly linked list - 
Case 1: Check if list is empty 
	Show message that list is empty.
Case 2: If list has elements
	Recursively the call the reverse function to reverse the elements

Note: Here head contains the address of first node

C/C++

Plain text
Copy to clipboard
Open code in new window
EnlighterJS 3 Syntax Highlighter
/* C Program To Reverse singly linked list */
//Save it as reverse_singly_linked_list.c
#include<stdio.h>
#include<malloc.h>
struct node *create(int);
void display(struct node *);
//Declaring node
struct node{
int data;
struct node *next;
};
int main(){
int n;
struct node *head;
printf("Enter number of nodes : ");
scanf("%d",&n);
//Calling function to create node
head=create(n);
//Calling function to display list
display(head);
printf("\nThe elements of list after reversal : ");
reverse_list(head);
return 0;
}
struct node *create(int n){
int i;
struct node *head=NULL;
struct node *address,*newNode;
for(i=0;i<n;i++){
//Creating a new node
newNode=(struct node*)malloc(sizeof(struct node*));
//Assigning data to newly created node
printf("Enter the value of %d node : ",i+1);
scanf("%d",&newNode->data);
newNode->next=NULL;
/*If list is empty assign the address of newly created node to head*/
if(head==NULL){
head=newNode;
}else{
/* If list already have few elements then loop through
list and add newly created node after given node*/
address=head;
while(address->next!=NULL){
address=address->next;
}
address->next=newNode;
}
}
return head;
}
void display(struct node *head){
struct node *address;
//If list is empty
if(head==NULL){
printf("The linked list is empty");
}else{
/*If list has elements then loop through the loop and
print elements one by one in sequential manner*/
address=head;
while(address!=NULL){
printf("The node value = %d and their address = %u\n",address->data,address);
address=address->next;
}
}
}
//Function to reverse the list
void reverse_list(struct node *head){
//If list has no element
if(head==NULL) {
printf("\nList is empty");
return;
}else {
//If list has only one element
if(head->next==NULL) {
printf("\nThe node value = %d and their address = %u",head->data,head);
return;
}
//Recursively call the function to reverse the list
reverse_list(head->next);
printf("\nThe node value = %d and their address = %u",head->data,head);
}
}
/* C Program To Reverse singly linked list */ //Save it as reverse_singly_linked_list.c #include<stdio.h> #include<malloc.h> struct node *create(int); void display(struct node *); //Declaring node struct node{ int data; struct node *next; }; int main(){ int n; struct node *head; printf("Enter number of nodes : "); scanf("%d",&n); //Calling function to create node head=create(n); //Calling function to display list display(head); printf("\nThe elements of list after reversal : "); reverse_list(head); return 0; } struct node *create(int n){ int i; struct node *head=NULL; struct node *address,*newNode; for(i=0;i<n;i++){ //Creating a new node newNode=(struct node*)malloc(sizeof(struct node*)); //Assigning data to newly created node printf("Enter the value of %d node : ",i+1); scanf("%d",&newNode->data); newNode->next=NULL; /*If list is empty assign the address of newly created node to head*/ if(head==NULL){ head=newNode; }else{ /* If list already have few elements then loop through list and add newly created node after given node*/ address=head; while(address->next!=NULL){ address=address->next; } address->next=newNode; } } return head; } void display(struct node *head){ struct node *address; //If list is empty if(head==NULL){ printf("The linked list is empty"); }else{ /*If list has elements then loop through the loop and print elements one by one in sequential manner*/ address=head; while(address!=NULL){ printf("The node value = %d and their address = %u\n",address->data,address); address=address->next; } } } //Function to reverse the list void reverse_list(struct node *head){ //If list has no element if(head==NULL) { printf("\nList is empty"); return; }else { //If list has only one element if(head->next==NULL) { printf("\nThe node value = %d and their address = %u",head->data,head); return; } //Recursively call the function to reverse the list reverse_list(head->next); printf("\nThe node value = %d and their address = %u",head->data,head); } }
/* C Program To Reverse singly linked list */
//Save it as reverse_singly_linked_list.c

#include<stdio.h>
#include<malloc.h>
struct node *create(int);
void display(struct node *);

//Declaring node
struct node{
    int data;
    struct node *next;
};

int main(){
    int n;
    struct node *head;
    printf("Enter number of nodes : ");
    scanf("%d",&n);
    
    //Calling function to create node
    head=create(n);
    
    //Calling function to display list
    display(head);

    printf("\nThe elements of list after reversal  : ");
    reverse_list(head);

    return 0;
}

struct node *create(int n){
    int i;
    struct node *head=NULL;
    struct node *address,*newNode;

    for(i=0;i<n;i++){
        
        //Creating a new node
        newNode=(struct node*)malloc(sizeof(struct node*));
        
        //Assigning data to newly created node
        printf("Enter the value of %d node : ",i+1);
        scanf("%d",&newNode->data);
        newNode->next=NULL;
        
        /*If list is empty assign the address of newly created node to head*/
        if(head==NULL){
            head=newNode;
        }else{
            
            /* If list already have few elements then loop through
            list and add newly created node after given node*/
            address=head;
            while(address->next!=NULL){
                address=address->next;
            }
            address->next=newNode;
        }
    }
    return head;
}

void display(struct node *head){
    struct node *address;
    
    //If list is empty
    if(head==NULL){
        printf("The linked list is empty");
    }else{
        
        /*If list has elements then loop through the loop and
        print elements one by one in sequential manner*/
        address=head;
        while(address!=NULL){
            printf("The node value = %d and their address = %u\n",address->data,address);
            address=address->next;
        }
    }
}

//Function to reverse the list
void reverse_list(struct node *head){
    
    //If list has no element
    if(head==NULL) {
        printf("\nList is empty");
        return;
    }else {
        
        //If list has only one element
        if(head->next==NULL) {
            printf("\nThe node value = %d and their address = %u",head->data,head);
            return;
        }
        
        //Recursively call the function to reverse the list
        reverse_list(head->next);
        printf("\nThe node value = %d and their address = %u",head->data,head);
    }
}
Plain text
Copy to clipboard
Open code in new window
EnlighterJS 3 Syntax Highlighter
Input:
Enter number of nodes : 5
Enter the value of 1 node : 1
Enter the value of 2 node : 2
Enter the value of 3 node : 3
Enter the value of 4 node : 4
Enter the value of 5 node : 5
Output:
The node value = 1 and their address = 6163784
The node value = 2 and their address = 6163816
The node value = 3 and their address = 6163832
The node value = 4 and their address = 6163848
The node value = 5 and their address = 6163864
The elements of list after reversal :
The node value = 5 and their address = 6163864
The node value = 4 and their address = 6163848
The node value = 3 and their address = 6163832
The node value = 2 and their address = 6163816
The node value = 1 and their address = 6163784
Input: Enter number of nodes : 5 Enter the value of 1 node : 1 Enter the value of 2 node : 2 Enter the value of 3 node : 3 Enter the value of 4 node : 4 Enter the value of 5 node : 5 Output: The node value = 1 and their address = 6163784 The node value = 2 and their address = 6163816 The node value = 3 and their address = 6163832 The node value = 4 and their address = 6163848 The node value = 5 and their address = 6163864 The elements of list after reversal : The node value = 5 and their address = 6163864 The node value = 4 and their address = 6163848 The node value = 3 and their address = 6163832 The node value = 2 and their address = 6163816 The node value = 1 and their address = 6163784
Input:
Enter number of nodes : 5
Enter the value of 1 node : 1
Enter the value of 2 node : 2
Enter the value of 3 node : 3
Enter the value of 4 node : 4
Enter the value of 5 node : 5

Output:
The node value = 1 and their address = 6163784
The node value = 2 and their address = 6163816
The node value = 3 and their address = 6163832
The node value = 4 and their address = 6163848
The node value = 5 and their address = 6163864

The elements of list after reversal  :
The node value = 5 and their address = 6163864
The node value = 4 and their address = 6163848
The node value = 3 and their address = 6163832
The node value = 2 and their address = 6163816
The node value = 1 and their address = 6163784

Java

Plain text
Copy to clipboard
Open code in new window
EnlighterJS 3 Syntax Highlighter
/* Java Program To Reverse singly linked list */
//Save it as ReverseSinglyLinkedList.java
import java.io.*;
import java.util.Scanner;
public class ReverseSinglyLinkedList {
// Declaring node
class Node {
int data;
Node next;
public Node(int data) {
this.data = data;
// Assigning null value to the next field
this.next = null;
}
}
public Node head = null;
// Function to add node
public void addNode(int data) {
// Creating a new node
Node newNode = new Node(data);
/* If list is empty assign the address of newly created node to head */
if (head == null) {
head = newNode;
} else {
//If list already have few elements then loop through list and
Node ptr = head;
while (ptr.next != null) {
ptr = ptr.next;
}
ptr.next = newNode;
}
}
public void display() {
Node ptr = head;
// If list is empty
if (ptr == null) {
System.out.println("The list is empty");
return;
}
System.out.println("The nodes of lists are : ");
/*
* If list has elements then loop through the loop and print elements one by one
* in sequential manner
*/
while (ptr != null) {
System.out.print(ptr.data + " ");
ptr = ptr.next;
}
}
public static void main(String[] args) {
Scanner scanner = new Scanner(System.in);
ReverseSinglyLinkedList list = new ReverseSinglyLinkedList();
System.out.println("Enter number of node you want to enter : ");
int n = scanner.nextInt();
for (int i = 0; i < n; i++) {
System.out.println("Enter value of " + (i + 1) + " node : ");
int val = scanner.nextInt();
list.addNode(val);
}
// Calling function to display list
list.display();
System.out.println("\nThe list after reversal is : ");
list.reverse_list(list.head);
}
//Method to reverse the list
private void reverse_list(Node head) {
//If list has no element
if(head==null) {
System.out.println("List is empty");
return;
}else {
//If list has only one element
if(head.next==null) {
System.out.print(head.data+" ");
return;
}
//Recursively call the function to reverse the list
reverse_list(head.next);
System.out.print(head.data+" ");
}
}
}
/* Java Program To Reverse singly linked list */ //Save it as ReverseSinglyLinkedList.java import java.io.*; import java.util.Scanner; public class ReverseSinglyLinkedList { // Declaring node class Node { int data; Node next; public Node(int data) { this.data = data; // Assigning null value to the next field this.next = null; } } public Node head = null; // Function to add node public void addNode(int data) { // Creating a new node Node newNode = new Node(data); /* If list is empty assign the address of newly created node to head */ if (head == null) { head = newNode; } else { //If list already have few elements then loop through list and Node ptr = head; while (ptr.next != null) { ptr = ptr.next; } ptr.next = newNode; } } public void display() { Node ptr = head; // If list is empty if (ptr == null) { System.out.println("The list is empty"); return; } System.out.println("The nodes of lists are : "); /* * If list has elements then loop through the loop and print elements one by one * in sequential manner */ while (ptr != null) { System.out.print(ptr.data + " "); ptr = ptr.next; } } public static void main(String[] args) { Scanner scanner = new Scanner(System.in); ReverseSinglyLinkedList list = new ReverseSinglyLinkedList(); System.out.println("Enter number of node you want to enter : "); int n = scanner.nextInt(); for (int i = 0; i < n; i++) { System.out.println("Enter value of " + (i + 1) + " node : "); int val = scanner.nextInt(); list.addNode(val); } // Calling function to display list list.display(); System.out.println("\nThe list after reversal is : "); list.reverse_list(list.head); } //Method to reverse the list private void reverse_list(Node head) { //If list has no element if(head==null) { System.out.println("List is empty"); return; }else { //If list has only one element if(head.next==null) { System.out.print(head.data+" "); return; } //Recursively call the function to reverse the list reverse_list(head.next); System.out.print(head.data+" "); } } }
/* Java Program To Reverse singly linked list */
//Save it as ReverseSinglyLinkedList.java

import java.io.*;
import java.util.Scanner;

public class ReverseSinglyLinkedList {
    
    // Declaring node
    class Node {
        int data;
        Node next;

        public Node(int data) {
            this.data = data;
            
            // Assigning null value to the next field
            this.next = null;
        }
    }

    public Node head = null;
    
    // Function to add node
    public void addNode(int data) {
        
        // Creating a new node
        Node newNode = new Node(data);
        
        /* If list is empty assign the address of newly created node to head */
        if (head == null) {
            head = newNode;
        } else {
            
            //If list already have few elements then loop through list and			
            Node ptr = head;
            while (ptr.next != null) {
                ptr = ptr.next;
            }
            ptr.next = newNode;
        }
    }

    public void display() {
        Node ptr = head;
        
        // If list is empty
        if (ptr == null) {
            System.out.println("The list is empty");
            return;
        }
        System.out.println("The nodes of lists are : ");
        
        /*
         * If list has elements then loop through the loop and print elements one by one
         * in sequential manner
         */
        while (ptr != null) {
            System.out.print(ptr.data + " ");
            ptr = ptr.next;
        }
    }

    public static void main(String[] args) {

        Scanner scanner = new Scanner(System.in);

        ReverseSinglyLinkedList list = new ReverseSinglyLinkedList();

        System.out.println("Enter number of node you want to enter : ");
        int n = scanner.nextInt();

        for (int i = 0; i < n; i++) {
            System.out.println("Enter value of " + (i + 1) + " node : ");
            int val = scanner.nextInt();
            list.addNode(val);
        }
        
        // Calling function to display list
        list.display();
        System.out.println("\nThe list after reversal is : ");
        list.reverse_list(list.head);
    }
    
    //Method to reverse the list
    private void reverse_list(Node head) {
        
        //If list has no element
        if(head==null) {
            System.out.println("List is empty");
            return;
        }else {
            
            //If list has only one element
            if(head.next==null) {
                System.out.print(head.data+" ");
                return;
            }
            
            //Recursively call the function to reverse the list
            reverse_list(head.next);
            System.out.print(head.data+" ");
        }
    }
}
Plain text
Copy to clipboard
Open code in new window
EnlighterJS 3 Syntax Highlighter
Input:
Enter number of node you want to enter :
5
Enter value of 1 node :
3
Enter value of 2 node :
1
Enter value of 3 node :
7
Enter value of 4 node :
5
Enter value of 5 node :
9
Output:
The nodes of lists are :
3 1 7 5 9
The list after reversal is :
9 5 7 1 3
Input: Enter number of node you want to enter : 5 Enter value of 1 node : 3 Enter value of 2 node : 1 Enter value of 3 node : 7 Enter value of 4 node : 5 Enter value of 5 node : 9 Output: The nodes of lists are : 3 1 7 5 9 The list after reversal is : 9 5 7 1 3
Input:
Enter number of node you want to enter : 
5
Enter value of 1 node : 
3
Enter value of 2 node : 
1
Enter value of 3 node : 
7
Enter value of 4 node : 
5
Enter value of 5 node : 
9

Output:
The nodes of lists are : 
3 1 7 5 9 
The list after reversal is : 
9 5 7 1 3

Related Programs

1) Program To Create And Display Singly Linked List
2) Program To Add A Node In Beginning Of Singly Linked List
3) Program To Add A Node In The End Of Singly Linked List
4) Program To Add A Node Before A Given Node Singly Linked List
5) Program To Add A Node After A Given Node Singly Linked List
6) Program To Delete Node From Beginning Singly Linked List
7) Program To Delete Node From End Singly Linked List
8) Program To Delete Given Node Singly Linked List
9) Program To Delete Node Before Given Node Singly Linked List
10) Program To Delete Node After Given Node Singly Linked List
11) Program To Delete All Nodes Of Singly Linked List
12) Program To Sort Elements Of Singly Linked List
13) Program to Find Maximum And Minimum Value Node In Singly Linked List
14) Program to Search an Element In Singly Linked List
15) Program To Remove Duplicate Elements From Singly Linked List
16) Program To Create And Display Circular Singly Linked List
17) Program To Add A Node At The Beginning Of Circular Linked List
Share Me

Leave a Reply