Related Articles

Related Articles

Reverse each word in a linked list node
  • Difficulty Level : Easy
  • Last Updated : 06 Feb, 2020

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.

C++

filter_none

edit
close

play_arrow

link
brightness_4
code

// 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;
}

chevron_right


Java

filter_none

edit
close

play_arrow

link
brightness_4
code

// 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

chevron_right


Python3

filter_none

edit
close

play_arrow

link
brightness_4
code

# 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 =
    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

chevron_right


C#

filter_none

edit
close

play_arrow

link
brightness_4
code

// 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

chevron_right


Output:

List before reverse: 
Geeksforgeeks a computer science portal for geeks 

List after reverse: 
skeegrofskeeG a retupmoc ecneics latrop rof skeeg

Attention reader! Don’t stop learning now. Get hold of all the important DSA concepts with the DSA Self Paced Course at a student-friendly price and become industry ready.




My Personal Notes arrow_drop_up
Recommended Articles
Page :