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> |
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)
Ready to dive in? Explore our Free Demo Content and join our DSA course, trusted by over 100,000 neveropen!