
- Trending Categories
Data Structure
Networking
RDBMS
Operating System
Java
iOS
HTML
CSS
Android
Python
C Programming
C++
C#
MongoDB
MySQL
Javascript
PHP
- Selected Reading
- UPSC IAS Exams Notes
- Developer's Best Practices
- Questions and Answers
- Effective Resume Writing
- HR Interview Questions
- Computer Glossary
- Who is Who
Find the Kth Node from the end in a given singly Linked List using C++
A linked list is a linear data structure that has multiple nodes that are connected with each other. Each node consists of two fields Data Field and address of the next node. Let us assume we have given a singly linked list the task is to find the kth node from the end in a given singly linked list. For example,
Input −
1→2→3→4→7→8→9 K= 4
Output −
Node from the 4th Position is − 4
Explanation − Since in the given singly linked list ‘4th’ node from the end is ‘4’, we will return the output as ‘4’.
Approach to solve this problem
Initially, we have given a linked list that consists of nodes. Each node contains the data and address to the next node. So, to find the kth node from the end, we will take two pointers which initially points to the head of the linked list.
While iterating over the linked list, we will move one of the pointers let’s say ‘fast’, and then move the other pointer until the ‘fast’ pointer doesn't reach the end.
A Function kthNodefromTheEnd(node*head, int pos) takes the pointer to the head node and the position as a parameter and returns the node from the end.
Let’s take two pointers ‘slow’ and ‘fast’ which are initially at the head.
Iterate over the linked list and move the fast pointer.
Since the ‘fast’ pointer is two steps ahead of ‘slow’ let us move both pointers until ‘fast’ reaches the end.
Now return the value at slow which points to the kth node from the end.
Example
#include<iostream> using namespace std; class node{ public: int data; node*next; node(int d){ data=d; next=NULL; } }; void insertAthead(node*&head,int d){ node*n= new node(d); n->next= head; head=n; } void printList(node*head){ while(head!=NULL){ cout<<head->data<<"-->"; head= head->next; } } void kthFromtheEnd(node*head, int k){ node*slow= head; node*fast= head; for(int i=0;i<k;i++){ fast= fast->next; } while(fast!=NULL){ slow= slow->next; fast= fast->next; } cout<<"Node from the "<<k<<"th position is"<<slow->data<<endl; } int main(){ node*head= NULL; insertAthead(head,2); insertAthead(head,4); insertAthead(head,5); insertAthead(head,6); insertAthead(head,7); printList(head); cout<<endl; kthFromtheEnd(head,4); return 0; }
Output
Running the above code will generate the output as,
Node from the 4th position is: 6
Explanation − The given linked list is 7→ 6→ 5→ 4→ 2→ and the kth value is ‘4’. So, the 4th node from the end is ‘6’, thus we will return ‘6’.
- Related Questions & Answers
- Delete a tail node from the given singly Linked List using C++
- C++ Program to Delete the First Node in a given Singly Linked List
- Find kth node from Middle towards Head of a Linked List in C++
- Recursive Approach to find nth node from the end in the linked list in C++
- Search an element in the given singly Linked List using C++
- Program to find the middle node of a singly linked list in Python
- Write a program in C++ to insert a Node at the beginning of the given Singly linked list
- Golang Program to add a node at the end of a given linked list.
- C# Program to remove a node at the end of the Linked List
- Python program to delete a node from the end of the Circular Linked List
- C# Program to add a node after the given node in a Linked List
- C# Program to add a node before the given node in a Linked List
- Program for n’th node from the end of a Linked List in C program
- Python program to delete a new node from the end of the doubly linked list
- Find the common nodes in two singly linked list in C++