Given a linked list. The task is to find the second last node of the linked list using a single traversal only.
Input : List = 1 -> 2 -> 3 -> 4 -> 5 -> NULL
Output : 4
Input : List = 2 -> 4 -> 6 -> 8 -> 33 -> 67 -> NULL
Output : 33
The idea is to traverse the linked list following the below approach:
- If the list is empty or contains less than 2 elements, return false.
- Otherwise check if the current node is the second last node of the linked list or not. That is, if (current_node->next-next == NULL ) then the current node is the second last node.
- If the current node is the second last node, print the node otherwise move to the next node.
- Repeat the above two steps until the second last node is reached.
Below is the implementation of the above approach:
Time complexity : O(n)
- Find modular node in a linked list
- Find the fractional (or n/k - th) node in linked list
- Find first node of loop in a linked list
- Python program to find middle of a linked list using one traversal
- Recursive Approach to find nth node from the end in the linked list
- Find kth node from Middle towards Head of a Linked List
- Find the largest node in Doubly linked list
- Swap Kth node from beginning with Kth node from end in a Linked List
- Implementing Iterator pattern of a single Linked List
- Circular Linked List | Set 2 (Traversal)
- Recursive insertion and traversal linked list
- Remove first node of the linked list
- Squareroot(n)-th node in a Linked List
- Remove every k-th node of the linked list
- Program for n'th node from the end of a Linked List
If you like GeeksforGeeks and would like to contribute, you can also write an article using contribute.geeksforgeeks.org or mail your article to firstname.lastname@example.org. See your article appearing on the GeeksforGeeks main page and help other Geeks.
Please Improve this article if you find anything incorrect by clicking on the "Improve Article" button below.
Improved By : VishalBachchas