Maison  >  Article  >  développement back-end  >  En langage C, imprimez le nœud de liste chaînée à l'index donné

En langage C, imprimez le nœud de liste chaînée à l'index donné

WBOY
WBOYavant
2023-08-26 21:21:041098parcourir

Nous devons imprimer les données des nœuds de la liste chaînée à l'index donné. Contrairement aux tableaux, les listes chaînées n'ont généralement pas d'index, nous devons donc parcourir toute la liste chaînée et imprimer les données lorsque nous atteignons un point particulier.

Disons que la liste contient les nœuds 29, 34, 43, 56 et 88 et la valeur des index sont 1, 2 et 4, la sortie sera les nœuds à ces index qui sont 34, 43 et 88.

En langage C, imprimez le nœud de liste chaînée à lindex donné

Exemple

Linked list: 29->34->43->56->88
Input: 1 2 4
Output: 34 43 88

Dans la représentation ci-dessus de la liste chaînée, les nœuds surlignés en jaune sont les nœuds à imprimé ou les nœuds qui sont sur un index particulier.

L'approche utilisée ici implique la prise d'un pointeur et d'une variable de compteur initialisés à 1 qui seront incrémentés chaque fois que le nœud est traversé. Le compteur correspond à la valeur clé. Lorsque la clé correspond à la valeur du compteur, le pointeur pointant vers la structure du nœud imprimera les données du nœud et incrémentera jusqu'au nœud suivant et ainsi de suite nous donnant les nœuds à une clé particulière.

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 displayList(struct node *catchead)
      create struct node *temp
      IF catchead = NULL
         Print list is empty
         return
      End
      Set temp = catchead
      Loop While (temp != NULL)
         print temp->data
         set temp = temp->next
      End
   Step 4 -> Declare Function int search(int key,struct node *head)
      Set int index
      Create struct node *newnode
      Set index = 0 and newnode = head
      Loop While (newnode != NULL & newnode->data != key)
         Set index++
         Set newnode = newnode->next
      End
      return (newnode != NULL) ? index : -1
   step 5 -> In Main()
      create node using struct node* head = intoList(9)
      call displayList(head)
      set index = search(24,head)
      IF (index >= 0)
         Print index
      Else
         Print not found in the list
      EndIF
STOP

Exemple

#include <stdio.h>
#include <stdlib.h>
//structure of a node
struct node {
   int data;
   struct node *next;
};
struct node* intoList(int data) {
   struct node* newnode = (struct node*)malloc(sizeof(struct node));
   newnode->data = data;
   newnode->next = NULL;
   return newnode;
}
//funtion to display list
void displayList(struct node *catchead) {
   struct node *temp;
   if (catchead == NULL) {
      printf("List is empty.</p><p>");
      return;
   }
   printf("elements of list are : ");
   temp = catchead;
   while (temp != NULL) {
      printf("%d ", temp->data);
      temp = temp->next;
   }
   printf("</p><p>");
}
//function to search element
int search(int key,struct node *head) {
   int index;
   struct node *newnode;
   index = 0;
   newnode = head;
   while (newnode != NULL && newnode->data != key) {
      index++;
      newnode = newnode->next;
   }
   return (newnode != NULL) ? index : -1;
}
int main() {
   int index;
   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);
   displayList(head);
   index = search(24,head);
   if (index >= 0)
      printf("%d found at position %d</p><p>", 24, index);
   else
      printf("%d not found in the list.</p><p>", 24);
   index=search(55,head);
   if (index >= 0)
      printf("%d found at position %d</p><p>", 55, index);
   else
   printf("%d not found in the list.</p><p>", 55);
}

输出

如果我们运行上面的程序,它将生成以下输出。

elements of list are : 9 76 13 24 55 109
24 found at position 3
55 found at position 4

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!

Déclaration:
Cet article est reproduit dans:. en cas de violation, veuillez contacter admin@php.cn Supprimer