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)
Recommended Articles