#include #include typedef struct Point { float x, y; } Point; typedef struct Node { Point point; struct Node *next; } Node; Node* createNode(float x, float y) { Node* newNode = (Node*)malloc(sizeof(Node)); if (newNode == NULL) { printf("Erreur d'allocation mémoire\n"); exit(1); } newNode->point.x = x; newNode->point.y = y; newNode->next = NULL; return newNode; } void printList(Node* head) { Node* current = head; while (current != NULL) { printf("(%.2f, %.2f) -> ", current->point.x, current->point.y); current = current->next; } printf("NULL\n"); } void removeNegativePoints(Node** headRef) { Node* current = *headRef; Node* prev = NULL; while (current != NULL) { if (current->point.x < 0 && current->point.y < 0) { Node* temp = current; if (prev == NULL) { *headRef = current->next; } else { prev->next = current->next; } current = current->next; free(temp); } else { prev = current; current = current->next; } } } int main() { Node* head = createNode(1.0, 2.0); head->next = createNode(-1.0, -3.0); head->next->next = createNode(4.0, -2.0); head->next->next->next = createNode(-2.0, -2.0); head->next->next->next->next = createNode(5.0, 6.0); printf("Liste avant la suppression des points négatifs :\n"); printList(head); removeNegativePoints(&head); printf("Liste après la suppression des points négatifs :\n"); printList(head); while (head != NULL) { Node* temp = head; head = head->next; free(temp); } return 0; }