
- C Programming Tutorial
- C - Home
- C - Overview
- C - Environment Setup
- C - Program Structure
- C - Basic Syntax
- C - Data Types
- C - Variables
- C - Constants
- C - Storage Classes
- C - Operators
- C - Decision Making
- C - Loops
- C - Functions
- C - Scope Rules
- C - Arrays
- C - Pointers
- C - Strings
- C - Structures
- C - Unions
- C - Bit Fields
- C - Typedef
- C - Input & Output
- C - File I/O
- C - Preprocessors
- C - Header Files
- C - Type Casting
- C - Error Handling
- C - Recursion
- C - Variable Arguments
- C - Memory Management
- C - Command Line Arguments
- C Programming useful Resources
- C - Questions & Answers
- C - Quick Guide
- C - Useful Resources
- C - Discussion
Print the last k nodes of the linked list in reverse order Iterative approach in C language
We have to print the k number of nodes of the linked list in reverse order. We have to apply the iterative approach to solve this problem.
Iterative method is the one which generally uses loops that are executed till the condition holds value 1 or true.
Let’s say, list contains the nodes 29, 34, 43, 56 and 88 and the value of k is 2 than the output will be the alternate nodes till k such as 56 and 88.
Example
Linked List: 29->34->43->56->88 Input: 2 Output: 56 88
Since we have to remove last k elements from the list the best way to do is by using stack data structure in which the elements are pushed which will create the list and the starting elements of the stack are the last elements of the list and they are pop out from the stack till kth number of times giving us the last nodes of the linked list.
The below code shows the c implementation of the algorithm given.
Algorithm
START Step 1 -> create node variable of type structure Declare int data Declare pointer of type node using *next Step 2 -> create struct node* intoList(int data) Create newnode using malloc Set newnode->data = data newnode->next = NULL return newnode step 3 -> Declare function void rev(struct node* head,int count, int k) create struct node* temp1 = head Loop While(temp1 != NULL) count++ temp1 = temp1->next end Declare int array[count], temp2 = count,i Set temp1 = head Loop While(temp1 != NULL) Set array[--temp2] = temp1->data Set temp1 = temp1->next End Loop For i = 0 and i < k and i++ Print array[i] End Step 4 -> In Main() Create list using struct node* head = intoList(9) Set k=3 and count=0 Call rev(head,count,k) STOP
Example
#include<stdio.h> #include<stdlib.h> // Structure of a node struct node { int data; struct node *next; }; //functon for inserting a new node struct node* intoList(int data) { struct node* newnode = (struct node*)malloc(sizeof(struct node)); newnode->data = data; newnode->next = NULL; return newnode; } // Function to reversely printing the elements of a node void rev(struct node* head,int count, int k) { struct node* temp1 = head; while(temp1 != NULL) { count++; temp1 = temp1->next; } int array[count], temp2 = count,i; temp1 = head; while(temp1 != NULL) { array[--temp2] = temp1->data; temp1 = temp1->next; } for(i = 0; i < k; i++) printf("%d ",array[i]); } int main() { printf("
reverse of a list is : "); struct node* head = intoList(9); //inserting elements into a list head->next = intoList(76); head->next->next = intoList(13); head->next->next->next = intoList(24); head->next->next->next->next = intoList(55); head->next->next->next->next->next = intoList(109); int k = 3, count = 0; rev(head, count, k); //calling function to print reversely return 0; }
Output
If we run above program then it will generate following output.
reverse of a list is : 109 55 24
- Related Articles
- Print the last k nodes of the linked list in reverse order Recursive Approaches in C language
- Print the alternate nodes of linked list (Iterative Method) in C language
- Using iterative function print the given number in reverse order in C language
- Print nodes of linked list at given indexes in C language
- Reverse Alternate K Nodes in a Singly Linked List in C++
- Print reverse of a Linked List without actually reversing in C language
- Construct a linked list from 2D matrix (Iterative Approach) in C++
- Print Immutable Linked List in Reverse in C++
- Find the product of last N nodes of the given Linked List in C++
- Print All Leaf Nodes of a Binary Tree from left to right using Iterative Approach in C++
- Find the product of first k nodes of the given Linked List in C++
- Print alternate nodes of a linked list using recursion in C++
- Program to reverse inner nodes of a linked list in python
- Reverse Nodes in k-Group in C++
- Python program to create a Circular Linked List of n nodes and display it in reverse order
