Home > Backend Development > C++ > Use the iteration method in C language to print out the last k nodes of the linked list in reverse order.

Use the iteration method in C language to print out the last k nodes of the linked list in reverse order.

WBOY
Release: 2023-09-17 21:21:02
forward
924 people have browsed it

Use the iteration method in C language to print out the last k nodes of the linked list in reverse order.

We must print the k nodes of the linked list in reverse order. We have to apply an iterative approach to solve this problem.

Iteration methods usually use a loop to execute until the condition value is 1 or true.

Say, list contains nodes 29, 34, 43, 56 and 88 and the value of k is 2, the output will be the spare nodes up to k, for example 56 and 88.

Use the iteration method in C language to print out the last k nodes of the linked list in reverse order.

Example

Linked List: 29->34->43->56->88
Input: 2
Output: 56 88
Copy after login

Since we have to remove the last k elements from the list, the best way is to use a stack data structure where the elements are pushed into it, this creates the list and the starting element of the stack is the last element of the list and then they are popped off the stack until the kth time, giving us the last node of the linked list.

The code below shows the C implementation of the given algorithm.

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
Copy after login

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("</p><p>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;
}
Copy after login

Output

If we run the above program, it will generate the following output.

reverse of a list is : 109 55 24
Copy after login

The above is the detailed content of Use the iteration method in C language to print out the last k nodes of the linked list in reverse order.. For more information, please follow other related articles on the PHP Chinese website!

source:tutorialspoint.com
Statement of this Website
The content of this article is voluntarily contributed by netizens, and the copyright belongs to the original author. This site does not assume corresponding legal responsibility. If you find any content suspected of plagiarism or infringement, please contact admin@php.cn
Popular Tutorials
More>
Latest Downloads
More>
Web Effects
Website Source Code
Website Materials
Front End Template