Monday, October 7, 2024
Google search engine
HomeData Modelling & AIReverse each word in a linked list node

Reverse each word in a linked list node

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

Examples: 

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

Input: Publish your own articles on neveropen
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("Geeksforneveropen");
    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("neveropen");
 
    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("Geeksforneveropen");
    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("neveropen");
 
    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("Geeksforneveropen")
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("neveropen")
 
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("Geeksforneveropen");
        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("neveropen");
     
        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("Geeksforneveropen");
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("neveropen");
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: 
Geeksforneveropen a computer science portal for neveropen 

List after reverse: 
skeegrofskeeG a retupmoc ecneics latrop rof skeeg

 

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

Feeling lost in the world of random DSA topics, wasting time without progress? It’s time for a change! Join our DSA course, where we’ll guide you on an exciting journey to master DSA efficiently and on schedule.
Ready to dive in? Explore our Free Demo Content and join our DSA course, trusted by over 100,000 neveropen!

RELATED ARTICLES

Most Popular

Recent Comments