Ecris le code d’une liste chaînée en C avec des fonctionnalités d’ajout, de suppression et de recherche de nœuds.
Comprendre les Listes Chaînées
Les listes chaînées sont des structures de données linéaires où chaque élément, appelé nœud, est composé d’une valeur et d’un pointeur vers le nœud suivant. En C, la manipulation des pointeurs est cruciale pour travailler avec des listes chaînées.
Initialisation du Projet
Commencez par créer un nouveau fichier source en C, par exemple linked_list.c
. Assurez-vous d’inclure les en-têtes nécessaires :
Structure du Nœud
Définissons la structure de base pour notre nœud :
struct Node {
int data;
struct Node* next;
};
Ici, data
représente la valeur du nœud, et next
est un pointeur vers le nœud suivant.
Fonction d’Ajout de Nœuds
Implémentons une fonction pour ajouter un nœud à la fin de la liste :
void appendNode(struct Node** head, int newData) {
struct Node* newNode = (struct Node*)malloc(sizeof(struct Node));
struct Node* last = *head;
newNode->data = newData;
newNode->next = NULL;
if (*head == NULL) {
*head = newNode;
return;
}
while (last->next != NULL) {
last = last->next;
}
last->next = newNode;
}
Fonction de Suppression de Nœuds
Ajoutons une fonction pour supprimer un nœud avec une valeur donnée :
void deleteNode(struct Node** head, int key) {
struct Node* temp = *head;
struct Node* prev = NULL;
if (temp != NULL && temp->data == key) {
*head = temp->next;
free(temp);
return;
}
while (temp != NULL && temp->data != key) {
prev = temp;
temp = temp->next;
}
if (temp == NULL) {
return;
}
prev->next = temp->next;
free(temp);
}
Fonction de Recherche de Nœuds
Créons une fonction pour rechercher un nœud avec une valeur donnée :
struct Node* searchNode(struct Node* head, int key) {
while (head != NULL) {
if (head->data == key) {
return head;
}
head = head->next;
}
return NULL;
}
Fonction Principale
Enfin, dans la fonction principale (main
), vous pouvez tester ces fonctionnalités :