Creation de liste monodirectionelle

debaby -  
nar6du14 Messages postés 506 Statut Membre -
Bonjour, aidez mw les ga

creation d'une liste mono de 10 entiers:
-affichage des elements de la liste;
-trier la liste;
-inserer une valeur VAL de façon que la liste reste trié;
-supprimer tous les enregistrements de valeurs paire;
-afficher la liste trouvée;


A voir également:

1 réponse

nar6du14 Messages postés 506 Statut Membre 64
 
typedef struct mono mono_t;

struct mono // une liste monodirectionnelle
{
int val;
struct mono *next;
};

void affiche( mono_t *mo ) // affiche les valeurs de la liste
{
int i = 1;
mono_t *tmp = mo;
for( tmp; tmp != NULL; tmp = tmp->next )
{
printf( "mono%d: %d", i, tmp->val );
i++;
}
}

mono_t *create( int n_elements ) // cree n elements mono_t
{
int i = n_elements;
mono_t *t;
for( i = 0; i < n_elements; i++ )
{
t = ( mono_t * )malloc( sizeof( mono_t ) );
memset( t, 0, sizeof( mono_t ) );
t = t->next;
}
return t;
}

mono_t *t trier_la_liste( mono_t *t )
{
mono_t *t_previous = t, *t_next = t, *tmp = NULL;
while( t_previous != NULL )
{
t_next = t_previous->next;
if( t_previous->val > t_next->val )
{
tmp = t_next->next;
t_previous->next = tmp;
t_next->next = t_previous;
}
if( t_previous->val < t_next->val || t_previous->val == t_next->val )
{
t_previous = t_previous->next;
}
}
}

void add_element( mono_t *t, mono_t *add )
{
mono_t *t1 = t, *t2 = NULL;
for( t1; t1 != NULL; t1 = t1->next )
{
if( t1->next = NULL ) t2 = t1;
}
t2->next = add;
trier_la_liste( t );
}

void supp_pair( mono_t *t )
{
mono_t *t1 = t, *tmp = NULL, t_previous = t;
for( t1; t1 != NULL; t1 = t1->next )
{
if( ( t1->val % 2 ) == 0 )
{
tmp = t1->next;
t_previous->next = tmp;
free( t1 );
t1 = t_previous;
}
}
}
0
nar6du14 Messages postés 506 Statut Membre 64
 
void supp_pair( mono_t *t )
{
mono_t *t1 = t, *tmp = NULL, t_previous = t;
for( t1; t1 != NULL; t1 = t1->next )
{
if( ( t1->val % 2 ) == 0 )
{
if( t1 != t_previous )
{
tmp = t1->next;
t_previous->next = tmp;
free( t1 );
t1 = t_previous;
}
else
{
tmp = t1->next;
free( t1 );
t1 = t_previous = tmp;
}
}
}
}


celle ci est la bone version de la fonction void supp_pair( mono_t * t );
0