Maison > développement back-end > C++ > Utilisez la méthode d'itération en langage C pour imprimer les k derniers nœuds de la liste chaînée dans l'ordre inverse.

Utilisez la méthode d'itération en langage C pour imprimer les k derniers nœuds de la liste chaînée dans l'ordre inverse.

WBOY
Libérer: 2023-09-17 21:21:02
avant
923 Les gens l'ont consulté

Utilisez la méthode ditération en langage C pour imprimer les k derniers nœuds de la liste chaînée dans lordre inverse.

Nous devons imprimer les k nœuds de la liste chaînée dans l'ordre inverse. Nous devons appliquer une approche itérative pour résoudre ce problème.

Les méthodes itératives sont généralement exécutées à l'aide d'une boucle jusqu'à ce que la valeur de la condition soit 1 ou vraie.

Disons que la liste contient les nœuds 29, 34, 43, 56 et 88 et que la valeur de k est 2, la sortie sera les nœuds de rechange jusqu'à k, par exemple 56 et 88.

Utilisez la méthode d'itération en langage C pour imprimer les k derniers nœuds de la liste chaînée dans l'ordre inverse.

Exemple

Linked List: 29->34->43->56->88
Input: 2
Output: 56 88
Copier après la connexion

Puisque nous devons supprimer les k derniers éléments de la liste, le meilleur moyen est d'utiliser une structure de données de pile dans laquelle les éléments y sont poussés, cela créera la liste et l'élément de départ de la pile est le dernier élément de la liste, puis ils sont retirés de la pile jusqu'à la kième fois, nous donnant le dernier nœud de la liste chaînée.

Le code ci-dessous montre l'implémentation C de l'algorithme donné.

Algorithme

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
Copier après la connexion

Exemple

#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;
}
Copier après la connexion

Output

Si nous exécutons le programme ci-dessus, il générera la sortie suivante.

reverse of a list is : 109 55 24
Copier après la connexion

Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!

Étiquettes associées:
source:tutorialspoint.com
Déclaration de ce site Web
Le contenu de cet article est volontairement contribué par les internautes et les droits d'auteur appartiennent à l'auteur original. Ce site n'assume aucune responsabilité légale correspondante. Si vous trouvez un contenu suspecté de plagiat ou de contrefaçon, veuillez contacter admin@php.cn
Tutoriels populaires
Plus>
Derniers téléchargements
Plus>
effets Web
Code source du site Web
Matériel du site Web
Modèle frontal