Bonjour à tous,
Etant en train de tenter de comprendre les notions de "liste chaînée" (il faut bien un début à tout ) et malgré quelques lacunes, j'arrive un peu à sortir la tête hors de l'eau. J'ai pour l'instant créer une fonction permettant d'ajouter un élément en fin de liste sans trop de soucis. Par contre, j'essaie désespérément de créer une fonction permettant de supprimer un élément en fonction d'une variable et là, c'est le drame.
Voici donc la fonction en question :
Supposont que dans mon main(), j'ai ceci :
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26 struct node { char *key; char *value; char *option; struct node *p_next; }; // le code étant assez sommaire ... struct node *remove_item (struct node *p_head, char *key, char *value, char *option) { struct node *p_item = p_head; while (p_item->p_next != NULL) { /* si la variable est dans la liste, supprime */ if (!strcmp(p_item->key, key)) { free(p_item); p_item = p_item->p_next; } else { p_item = p_item->p_next; } } return p_item; }
Je devrais obtenir une liste avec uniquement les variables "directory", "shell" (la variable "test" étant enlevée).
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8 [...] // partie du code pas trop intéressante p_head = add_item (p_head, "directory", "/root", "\0x08"); p_head = add_item (p_head, "shell", "/bin/sh", "\0x08"); p_head = add_item (p_head, "test", "0", "\0x08"); p_head = remove_item (p_head, "test", NULL, NULL);
Au lieu de cela, j'obtiens
Ce qui correspond à la dernière variable. Ce que je tente de faire est-il possible ? Je n'ai pas l'impression d'avoir un algorithme complètement nul par contre je ne vois pas où peut se poser le problème.# ./a.out
test = 0
#
Des idées sur le(s) problèmes(s) ?
Partager