C Program To Check If A Linked List Of Strings Forms A Palindrome
Given a linked list handling string data, check to see whether data is palindrome or not? Examples:
Input: a -> bc -> d -> dcb -> a -> NULL Output: True String "abcddcba" is palindrome. Input: a -> bc -> d -> ba -> NULL Output: False String "abcdba" is not palindrome.
The idea is very simple. Construct a string out of given linked list and check if the constructed string is palindrome or not.
C++
// Program to check if a given linked list // of strings form a palindrome #include <bits/stdc++.h> using namespace std; // Link list node struct Node { string data; Node* next; }; // A utility function to check if str // is palindrome or not bool isPalindromeUtil(string str) { int length = str.length(); // Match characters from beginning // and end. for ( int i = 0; i < length / 2; i++) if (str[i] != str[length - i - 1]) return false ; return true ; } // Returns true if string formed by linked // list is palindrome bool isPalindrome(Node *node) { // Append all nodes to form a string string str = "" ; while (node != NULL) { str.append(node->data); node = node->next; } // Check if the formed string is // palindrome return isPalindromeUtil(str); } // A utility function to print a given // linked list void printList(Node *node) { while (node != NULL) { cout << node->data << " -> " ; node = node->next; } printf ( "NULL" ); } /* Function to create a new node with given data */ Node *newNode( const char *str) { Node *new_node = new Node; new_node->data = str; new_node->next = NULL; return new_node; } // Driver code int main() { Node *head = newNode( "a" ); head->next = newNode( "bc" ); head->next->next = newNode( "d" ); head->next->next->next = newNode( "dcb" ); head->next->next->next->next = newNode( "a" ); isPalindrome(head)? printf ( "true" ): printf ( "false" ); return 0; } |
Output:
true
Time Complexity: O(n), where n is the number of nodes in the given linked list.
Auxiliary Space: O(m), where m is the length of the string formed by the linked list.
Please refer complete article on Check if a linked list of strings forms a palindrome for more details!
Please Login to comment...