If the given linked list is 1 -> 2 -> 3 -> 4 -> 5 -> NULL.
Then rearrange it into 1 -> 5 -> 2 -> 4 -> 3 -> NULL.
The first line of input contains an integer 'T' representing the number of test cases. Then the test case follows.
The only line of each test case contains the elements of the singly linked list separated by a single space and terminated by -1. Hence, -1 would never be a list element.
For each test case, Print a single line containing the linked list in the specified form. The elements of the linked list must be separated by a single space and terminated by -1.
You do not need to print anything, it has already been taken care of. Just implement the given function.
1 <= 'T' <= 10
0 <= 'L' <= 1000
1 <= data <= 10 ^ 9 and data != -1
Where ‘T’ is the number of test-cases and ‘L’ is the number of nodes in the Linked List, and ‘data’ is the data in each node of the list.
Time Limit: 1 sec.
Try to solve this problem in O(N) time complexity and O(1) space complexity.
The main idea is to maintain a pointer ‘FRONT’ that will process the nodes from the front side of the linked list and keep removing the nodes from the backside. While removing nodes from the back, we will put them in front of the list after the ‘FRONT’ pointer and move the ‘FRONT’ pointer ahead.
The main idea is to divide the linked list into halves and then reverse the latter half and then merge them alternatively.
Deletion In Doubly Linked List
Deletion In Doubly Linked List
Deletion In Doubly Linked List
Insertion In Doubly Linked List
Insertion In Doubly Linked List
Insertion In Doubly Linked List
Insertion In Doubly Linked List
LRU Cache
Delete Nodes On Regular Intervals
Add One To Linked List