1 respuesta
```c
#include <stdio.h>
#include <stdlib.h>
// Définition d'un nœud pour la liste circulaire
typedef struct Node {
int data;
struct Node* next;
} Node;
// Fonction pour créer un nouveau nœud
Node* createNode(int data) {
Node* newNode = (Node*)malloc(sizeof(Node));
newNode->data = data;
newNode->next = newNode; // Initialement, le nœud pointe vers lui-même
return newNode;
}
// Fonction pour insérer un nœud à la fin de la liste circulaire
void insertEnd(Node** head, int data) {
Node* newNode = createNode(data);
if (*head == NULL) {
*head = newNode; // Si la liste est vide, le nouveau nœud devient le tête
} else {
Node* temp = *head;
while (temp->next != *head) { // Naviguer jusqu'au dernier nœud
temp = temp->next;
}
temp->next = newNode; // Lier le dernier nœud au nouveau nœud
}
newNode->next = *head; // Faire pointer le nouveau nœud vers le tête
}
// Fonction pour afficher la liste circulaire
void displayList(Node* head) {
if (head == NULL) return;
Node* temp = head;
do {
printf("%d ", temp->data);
temp = temp->next;
} while (temp != head);
printf("\n");
}
// Fonction principale
int main() {
Node* head = NULL;
insertEnd(&head, 10);
insertEnd(&head, 20);
insertEnd(&head, 30);
displayList(head); // Afficher la liste
return 0;
}
```</stdlib.h></stdio.h>
#include <stdio.h>
#include <stdlib.h>
// Définition d'un nœud pour la liste circulaire
typedef struct Node {
int data;
struct Node* next;
} Node;
// Fonction pour créer un nouveau nœud
Node* createNode(int data) {
Node* newNode = (Node*)malloc(sizeof(Node));
newNode->data = data;
newNode->next = newNode; // Initialement, le nœud pointe vers lui-même
return newNode;
}
// Fonction pour insérer un nœud à la fin de la liste circulaire
void insertEnd(Node** head, int data) {
Node* newNode = createNode(data);
if (*head == NULL) {
*head = newNode; // Si la liste est vide, le nouveau nœud devient le tête
} else {
Node* temp = *head;
while (temp->next != *head) { // Naviguer jusqu'au dernier nœud
temp = temp->next;
}
temp->next = newNode; // Lier le dernier nœud au nouveau nœud
}
newNode->next = *head; // Faire pointer le nouveau nœud vers le tête
}
// Fonction pour afficher la liste circulaire
void displayList(Node* head) {
if (head == NULL) return;
Node* temp = head;
do {
printf("%d ", temp->data);
temp = temp->next;
} while (temp != head);
printf("\n");
}
// Fonction principale
int main() {
Node* head = NULL;
insertEnd(&head, 10);
insertEnd(&head, 20);
insertEnd(&head, 30);
displayList(head); // Afficher la liste
return 0;
}
```</stdlib.h></stdio.h>