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.
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é.
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
#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!