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: 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++
#include <bits/stdc++.h>
using namespace std;
struct Node {
string c;
struct Node* next;
};
struct Node* newNode(string c)
{
Node* temp = new Node;
temp->c = c;
temp->next = NULL;
return temp;
};
void reverse_word(string& str)
{
reverse(str.begin(), str.end());
}
void reverse( struct Node* head)
{
struct Node* ptr = head;
while (ptr != NULL) {
reverse_word(ptr->c);
ptr = ptr->next;
}
}
void printList( struct Node* head)
{
while (head != NULL) {
cout << head->c << " " ;
head = head->next;
}
}
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
class GFG
{
static class Node
{
String c;
Node next;
};
static Node newNode(String c)
{
Node temp = new Node();
temp.c = c;
temp.next = null ;
return temp;
};
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;
while (ptr != null )
{
ptr.c = reverse_word(ptr.c);
ptr = ptr.next;
}
return head;
}
static void printList( Node head)
{
while (head != null )
{
System.out.print( head.c + " " );
head = head.next;
}
}
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);
}
}
|
Python3
class Node:
def __init__( self , next = None , data = None ):
self . next = next
self .data = data
def newNode(c) :
temp = Node()
temp.c = c
temp. next = None
return temp
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
while (ptr ! = None ):
ptr.c = reverse_word(ptr.c)
ptr = ptr. next
return head
def printList( head) :
while (head ! = None ):
print ( head.c ,end = " " )
head = head. next
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)
|
C#
using System;
class GFG
{
public class Node
{
public String c;
public Node next;
};
static Node newNode(String c)
{
Node temp = new Node();
temp.c = c;
temp.next = null ;
return temp;
}
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;
while (ptr != null )
{
ptr.c = reverse_word(ptr.c);
ptr = ptr.next;
}
return head;
}
static void printList( Node head)
{
while (head != null )
{
Console.Write( head.c + " " );
head = head.next;
}
}
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);
}
}
|
Javascript
<script>
class Node
{
constructor()
{
this .c = "" ;
this .next = null ;
}
};
function newNode(c)
{
var temp = new Node();
temp.c = c;
temp.next = null ;
return temp;
}
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;
while (ptr != null )
{
ptr.c = reverse_word(ptr.c);
ptr = ptr.next;
}
return head;
}
function printList( head)
{
while (head != null )
{
document.write( head.c + " " );
head = head.next;
}
}
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)
Last Updated :
04 Aug, 2022
Like Article
Save Article
Share your thoughts in the comments
Please Login to comment...