Skip to content
Related Articles

Related Articles

Reverse each word in a linked list node

Improve Article
Save Article
  • Difficulty Level : Easy
  • Last Updated : 04 Aug, 2022
Improve Article
Save Article

Given a linked list of strings, we need to reverse each word of the string in the given linked list.

Examples: 

Input: geeksforgeeks a computer science portal for geeks 
Output: skeegrofskeeg a retupmoc ecneics latrop rof skeeg

Input: Publish your own articles on geeksforgeeks
Output: hsilbuP ruoy nwo selcitra no skeegrofskeeg 

Using a loop iterate the list till null and take string from each node and reverse the string. 

Implementation:

C++




// C++ program to reverse each word
// in a linked list
#include <bits/stdc++.h>
using namespace std;
 
// Linked list Node structure
struct Node {
    string c;
    struct Node* next;
};
 
// Function to create newNode
// in a linked list
struct Node* newNode(string c)
{
    Node* temp = new Node;
    temp->c = c;
    temp->next = NULL;
    return temp;
};
 
// reverse each node data
void reverse_word(string& str)
{
    reverse(str.begin(), str.end());
}
 
void reverse(struct Node* head)
{
    struct Node* ptr = head;
 
    // iterate each node and call reverse_word
    // for each node data
    while (ptr != NULL) {
        reverse_word(ptr->c);
        ptr = ptr->next;
    }
}
 
// printing linked list
void printList(struct Node* head)
{
    while (head != NULL) {
        cout << head->c << " ";
        head = head->next;
    }
}
 
// Driver program
int main()
{
    Node* head = newNode("Geeksforgeeks");
    head->next = newNode("a");
    head->next->next = newNode("computer");
    head->next->next->next = newNode("science");
    head->next->next->next->next = newNode("portal");
    head->next->next->next->next->next = newNode("for");
    head->next->next->next->next->next->next = newNode("geeks");
 
    cout << "List before reverse: \n";
    printList(head);
 
    reverse(head);
 
    cout << "\n\nList after reverse: \n";
    printList(head);
 
    return 0;
}

Java




// Java program to reverse each word
// in a linked list
class GFG
{
 
// Linked list Node ure
static class Node
{
    String c;
    Node next;
};
 
// Function to create newNode
// in a linked list
static Node newNode(String c)
{
    Node temp = new Node();
    temp.c = c;
    temp.next = null;
    return temp;
};
 
// reverse each node data
static String reverse_word(String str)
{
    String s = "";
    for(int i = 0; i < str.length(); i++)
    s = str.charAt(i) + s;
    return s;
}
 
static Node reverse( Node head)
{
    Node ptr = head;
 
    // iterate each node and call reverse_word
    // for each node data
    while (ptr != null)
    {
        ptr.c = reverse_word(ptr.c);
        ptr = ptr.next;
    }
    return head;
}
 
// printing linked list
static void printList( Node head)
{
    while (head != null)
    {
        System.out.print( head.c + " ");
        head = head.next;
    }
}
 
// Driver program
public static void main(String args[])
{
    Node head = newNode("Geeksforgeeks");
    head.next = newNode("a");
    head.next.next = newNode("computer");
    head.next.next.next = newNode("science");
    head.next.next.next.next = newNode("portal");
    head.next.next.next.next.next = newNode("for");
    head.next.next.next.next.next.next = newNode("geeks");
 
    System.out.print( "List before reverse: \n");
    printList(head);
 
    head = reverse(head);
 
    System.out.print( "\n\nList after reverse: \n");
    printList(head);
 
}
}
 
// This code is contributed by Arnab Kundu

Python3




# Python3 program to reverse each word
# in a linked list
 
# Node of a linked list
class Node:
    def __init__(self, next = None, data = None):
        self.next = next
        self.data = data
 
# Function to create newNode
# in a linked list
def newNode(c) :
 
    temp = Node()
    temp.c = c
    temp.next = None
    return temp
 
# reverse each node data
def reverse_word(str) :
    s = ""
    i = 0
    while(i < len(str) ):
        s = str[i] + s
        i = i + 1
    return s
 
def reverse( head) :
    ptr = head
 
    # iterate each node and call reverse_word
    # for each node data
    while (ptr != None):
        ptr.c = reverse_word(ptr.c)
        ptr = ptr.next
     
    return head
 
# printing linked list
def printList( head) :
 
    while (head != None):
        print( head.c ,end = " ")
        head = head.next
     
# Driver program
head = newNode("Geeksforgeeks")
head.next = newNode("a")
head.next.next = newNode("computer")
head.next.next.next = newNode("science")
head.next.next.next.next = newNode("portal")
head.next.next.next.next.next = newNode("for")
head.next.next.next.next.next.next = newNode("geeks")
 
print( "List before reverse: ")
printList(head)
 
head = reverse(head)
 
print( "\n\nList after reverse: ")
printList(head)
 
# This code is contributed by Arnab Kundu

C#




// C# program to reverse each word
// in a linked list
using System;
 
class GFG
{
     
    // Linked list Node ure
    public class Node
    {
        public String c;
        public Node next;
    };
     
    // Function to create newNode
    // in a linked list
    static Node newNode(String c)
    {
        Node temp = new Node();
        temp.c = c;
        temp.next = null;
        return temp;
    }
     
    // reverse each node data
    static String reverse_word(String str)
    {
        String s = "";
        for(int i = 0; i < str.Length; i++)
            s = str[i] + s;
        return s;
    }
     
    static Node reverse( Node head)
    {
        Node ptr = head;
     
        // iterate each node and call reverse_word
        // for each node data
        while (ptr != null)
        {
            ptr.c = reverse_word(ptr.c);
            ptr = ptr.next;
        }
        return head;
    }
     
    // printing linked list
    static void printList( Node head)
    {
        while (head != null)
        {
            Console.Write( head.c + " ");
            head = head.next;
        }
    }
     
    // Driver program
    public static void Main(String []args)
    {
        Node head = newNode("Geeksforgeeks");
        head.next = newNode("a");
        head.next.next = newNode("computer");
        head.next.next.next = newNode("science");
        head.next.next.next.next = newNode("portal");
        head.next.next.next.next.next = newNode("for");
        head.next.next.next.next.next.next = newNode("geeks");
     
        Console.Write( "List before reverse: \n");
        printList(head);
     
        head = reverse(head);
     
        Console.Write( "\n\nList after reverse: \n");
        printList(head);
     
    }
}
 
// This code contributed by Rajput-Ji

Javascript




<script>
 
// JavaScript program to reverse each word
// in a linked list
 
// Linked list Node ure
class Node
{
    constructor()
    {
        this.c = "";
        this.next = null;
    }
};
 
// Function to create newNode
// in a linked list
function newNode(c)
{
    var temp = new Node();
    temp.c = c;
    temp.next = null;
    return temp;
}
 
// reverse each node data
function reverse_word(str)
{
    var s = "";
    for(var i = 0; i < str.length; i++)
        s = str[i] + s;
    return s;
}
 
function reverse(head)
{
    var ptr = head;
 
    // iterate each node and call reverse_word
    // for each node data
    while (ptr != null)
    {
        ptr.c = reverse_word(ptr.c);
        ptr = ptr.next;
    }
    return head;
}
 
// printing linked list
function printList( head)
{
    while (head != null)
    {
        document.write( head.c + " ");
        head = head.next;
    }
}
 
// Driver program
var head = newNode("Geeksforgeeks");
head.next = newNode("a");
head.next.next = newNode("computer");
head.next.next.next = newNode("science");
head.next.next.next.next = newNode("portal");
head.next.next.next.next.next = newNode("for");
head.next.next.next.next.next.next = newNode("geeks");
document.write( "List before reverse: <br>");
printList(head);
head = reverse(head);
document.write( "<br><br>List after reverse: <br>");
printList(head);
 
</script>

Output: 

List before reverse: 
Geeksforgeeks a computer science portal for geeks 

List after reverse: 
skeegrofskeeG a retupmoc ecneics latrop rof skeeg

 

Time complexity : O(n) 
Auxiliary Space : O(1)


My Personal Notes arrow_drop_up
Related Articles

Start Your Coding Journey Now!