Given two linked lists, represented as linked lists (every character is a node in linked list). Write a function compare() that works similar to strcmp(), i.e., it returns 0 if both strings are same, 1 if first linked list is lexicographically greater, and -1 if second string is lexicographically greater.

Examples:

Input: list1 = g->e->e->k->s->a
       list2 = g->e->e->k->s->b
Output: -1

Input: list1 = g->e->e->k->s->a
       list2 = g->e->e->k->s
Output: 1

Input: list1 = g->e->e->k->s
       list2 = g->e->e->k->s
Output: 0

c++ programming

[pastacode lang=”cpp” manual=”%2F%2F%20C%2B%2B%20program%20to%20compare%20two%20strings%20represented%20as%20linked%20%0A%2F%2F%20lists%0A%23include%3Cbits%2Fstdc%2B%2B.h%3E%0Ausing%20namespace%20std%3B%0A%20%20%0A%2F%2F%20Linked%20list%20Node%20structure%0Astruct%20Node%0A%7B%0A%20%20%20%20char%20c%3B%0A%20%20%20%20struct%20Node%20*next%3B%0A%7D%3B%0A%20%20%0A%2F%2F%20Function%20to%20create%20newNode%20in%20a%20linkedlist%0ANode*%20newNode(char%20c)%0A%7B%0A%20%20%20%20Node%20*temp%20%3D%20new%20Node%3B%0A%20%20%20%20temp-%3Ec%20%3D%20c%3B%0A%20%20%20%20temp-%3Enext%20%3D%20NULL%3B%0A%20%20%20%20return%20temp%3B%0A%7D%3B%0A%20%0Aint%20compare(Node%20*list1%2C%20Node%20*list2)%20%0A%7B%20%20%20%20%0A%20%20%20%20%2F%2F%20Traverse%20both%20lists.%20Stop%20when%20either%20end%20of%20a%20linked%20%0A%20%20%20%20%2F%2F%20list%20is%20reached%20or%20current%20characters%20don’t%20match%0A%20%20%20%20while%20(list1%20%26%26%20list2%20%26%26%20list1-%3Ec%20%3D%3D%20list2-%3Ec)%20%0A%20%20%20%20%7B%20%20%20%20%20%20%20%20%20%0A%20%20%20%20%20%20%20%20list1%20%3D%20list1-%3Enext%3B%0A%20%20%20%20%20%20%20%20list2%20%3D%20list2-%3Enext%3B%0A%20%20%20%20%7D%0A%20%20%20%20%20%0A%20%20%20%20%2F%2F%20%20If%20both%20lists%20are%20not%20empty%2C%20compare%20mismatching%0A%20%20%20%20%2F%2F%20%20characters%0A%20%20%20%20if%20(list1%20%26%26%20list2)%20%0A%20%20%20%20%20%20%20%20return%20(list1-%3Ec%20%3E%20list2-%3Ec)%3F%201%3A%20-1%3B%0A%20%0A%20%20%20%20%2F%2F%20If%20either%20of%20the%20two%20lists%20has%20reached%20end%0A%20%20%20%20if%20(list1%20%26%26%20!list2)%20return%201%3B%0A%20%20%20%20if%20(list2%20%26%26%20!list1)%20return%20-1%3B%0A%20%20%20%20%20%0A%20%20%20%20%2F%2F%20If%20none%20of%20the%20above%20conditions%20is%20true%2C%20both%20%0A%20%20%20%20%2F%2F%20lists%20have%20reached%20end%20%0A%20%20%20%20return%200%3B%0A%7D%0A%20%0A%2F%2F%20Driver%20program%0Aint%20main()%0A%7B%0A%20%20%20%20Node%20*list1%20%3D%20newNode(‘g’)%3B%0A%20%20%20%20list1-%3Enext%20%3D%20newNode(‘e’)%3B%0A%20%20%20%20list1-%3Enext-%3Enext%20%3D%20newNode(‘e’)%3B%0A%20%20%20%20list1-%3Enext-%3Enext-%3Enext%20%3D%20newNode(‘k’)%3B%0A%20%20%20%20list1-%3Enext-%3Enext-%3Enext-%3Enext%20%3D%20newNode(‘s’)%3B%0A%20%20%20%20list1-%3Enext-%3Enext-%3Enext-%3Enext-%3Enext%20%3D%20newNode(‘b’)%3B%0A%20%0A%20%20%20%20Node%20*list2%20%3D%20newNode(‘g’)%3B%0A%20%20%20%20list2-%3Enext%20%3D%20newNode(‘e’)%3B%0A%20%20%20%20list2-%3Enext-%3Enext%20%3D%20newNode(‘e’)%3B%0A%20%20%20%20list2-%3Enext-%3Enext-%3Enext%20%3D%20newNode(‘k’)%3B%0A%20%20%20%20list2-%3Enext-%3Enext-%3Enext-%3Enext%20%3D%20newNode(‘s’)%3B%0A%20%20%20%20list2-%3Enext-%3Enext-%3Enext-%3Enext-%3Enext%20%3D%20newNode(‘a’)%3B%0A%20%0A%20%20%20%20cout%20%3C%3C%20compare(list1%2C%20list2)%3B%0A%20%20%0A%20%20%20%20return%200%3B%0A%7D” message=”” highlight=”” provider=”manual”/]

Output:

1