Salut les gars j'apprends C et je vais avoir du mal à comprendre ce code:liste chaînée et Pointeurs en C
struct node {
int data;
int key;
struct node *next;
};
struct node *head = NULL;
struct node *current = NULL;
//delete a link with given key
struct node* delete(int key) {
//start from the first link
struct node* current = head;
struct node* previous = NULL;
//if list is empty
if(head == NULL) {
return NULL;
}
//navigate through list
while(current->key != key) {
//if it is last node
if(current->next == NULL) {
return NULL;
} else {
//store reference to current link
previous = current;
//move to next link
current = current->next;
}
}
//found a match, update the link
if(current == head) {
//change first to point to next link
head = head->next;
} else {
//bypass the current link
previous->next = current->next;
}
return current;
}
Le code fonctionne réellement, il supprime les éléments de la liste chaînée en C mais Je ne comprends pas comment, si nous ne sommes pas toucher la variable struct tête (Voici ma peine):
//bypass the current link
previous->next = current->next;
Je comprends le code mais je ne comprends pas comment la tête variable va changer si nous ne fais pas la tête = quelque chose.
De plus, la façon dont il est posible d'avoir deux variables avec le même nom (courant)
Merci
Btw J'ai trouvé le code ici: https://www.tutorialspoint.com/data_structures_algorithms/linked_list_program_in_c.htm
Parce que vous avez omis les définitions de fonctions dans le tutoriel et le code affiché en ligne inepte. –
Vous manquez vraiment une partie de la fonction. Voir le tutoriel plus en détail. La partie que vous avez ici ne trouve que celle à supprimer. Le code ci-dessous fait la suppression. – Kajienk