#include <studio.
h>
#include <stdlib.h>
typedef struct Noeud {
int data;
struct Noeud *next;
} Noeud;;
void insert(Noeud **premier, int value) {
Noeud *newNoeud =
(Noeud*)malloc(sizeof(Node));
newNoeud->data = value;
newNoeud->next = *premier;
*premier = newNoeud;
void afficherliste(Noeud* premier){
Noeud *temp = premier;
while (temp != NULL){
printf("%d -> ",temp->data);
temp = temp->next;
printf("NULL\n");
void Trier(Noeud **premir) {
int swapped;
Noeud *ptr1;
Noeud *1ptr = NuLL;
if (*premier == NULL) return;
do {
swapped = 0;
ptr1= *premier;
while (ptr1->next != 1ptr){
if (ptr1->data >
ptr1->next->data) {
int temp =ptr1->data;
ptr1->data =
ptr1->next->data;
ptr1->next->data = temp;
swapped = 1;
ptr1=ptr1->next;
1ptr = ptr1;
} while (swapped);
void Separer(Noeud *premier,Noeud **positifs,
Noeud **negatifs) {
while(premier != NULL) {
if(premier->data>= 0){
insert(positifs,premier->data);
} else {
insert(negatifs,premier->data);
int main() {
Noeud *premier = NULL;
Noeud *positifs = NULL;
Noeud *negatifs = NULL;
//insertion des valeurs dans la liste chainée
insert(&premier, 7);
insert(&premier,-18);
insert(&premier,0);
insert(&premier,7);
insert(&premier,45);
insert(&premier,87);
insert(&premier,7);
insert(&premier,-5);
printf("liste originale :\n");
afficherliste(premier);
//trier la liste
trier(&premier);
printf("\nliste triée :\n");
afficherliste(premier);
//separer en listes postives et negatives
separer(premier,&positifs,&negatifs);
printf("\nliste des positifs :\n");
afficherliste(positifs);
printf("\nliste dzs negatifs :\n");
return 0;