On va remettre l'élements dans une cha?ne, touts les numéros positifs sont dans le première cha?ne et touts les numéros négatifs sont dans la deuxième cha?ne.?
?
#include <iostream> using namespace std; #define N 5 typedef struct cellule { int valeur; struct cellule* pointeur; }Tcellule; Tcellule* recherchePrecedant(Tcellule* T, int v); Tcellule* suppremerTcellule(Tcellule* T, int v); void positifNegativf(Tcellule** adt1, Tcellule** adt2); int main() { Tcellule* T1; Tcellule e={5,NULL}; Tcellule d={4,&e}; Tcellule c={3,&d}; Tcellule b={2,&c}; Tcellule a={1,&b}; T1=&a; Tcellule* T2=NULL; Tcellule** adT1=&T1; Tcellule** adT2=&T2; positifNegativf(adT1,adT2); Tcellule* p1=*adT1; Tcellule* p2=*adT2; while(p1!=NULL) { cout<<"P1:"<<p1->valeur<<"\n"; p1=p1->pointeur; } while(p2!=NULL) { cout<<"P2:"<<p2->valeur<<"\n"; p2=p2->pointeur; } /* Tcellule* p=suppremerTcellule(T, 1); while(p!=NULL) { cout<<p->valeur<<"\n"; p=p->pointeur; } */ return 0; } Tcellule* recherchePrecedant(Tcellule* T, int v) { Tcellule* p=T; Tcellule* precp=NULL; while(p!=NULL&&p->valeur<v) { precp=p; p=p->pointeur; } return precp; } Tcellule* suppremerTcellule(Tcellule* T, int v) { Tcellule* precp = recherchePrecedant(T, v); if(precp==NULL) { if(T->valeur==v) T=T->pointeur; } else { if(precp->pointeur->valeur==v) precp->pointeur=precp->pointeur->pointeur; } return T; } void positifNegativf(Tcellule** adt1, Tcellule** adt2) { Tcellule* t1=*adt1; Tcellule* t2=*adt2; Tcellule* p=t1; Tcellule* prec=p; while(p!=NULL) { if(t1->valeur<0) { p=t1->pointeur; t1->pointeur=t2; t2=t1; t1=p; prec=t1; } else { if(p->valeur>=0) { prec=p; p=p->pointeur; } else { prec->pointeur=p->pointeur; p->pointeur=t2; t2=p; p=prec->pointeur; } } } *adt1 = t1; *adt2 = t2; }
?