1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98
| element* creerElement(int val)
{
element* temp=malloc(sizeof(element));
if(temp!=0)
{
temp->val=val;
/* quand on crée un élément, il ne pointe sur aucun suivant */
temp->next = NULL;
}
}
liste* creerListe()
{
liste* temp=malloc(sizeof(liste));
if(temp)
{
/* au début, la liste est vide */
temp->premier = NULL;
temp->dernier = NULL;
temp->taille = 0;
}
return temp;
}
void push_back(liste* l, element* elem)
{
if(l->premier)
l->premier=elem;
if(l->dernier)
l->dernier->suivant=elem;
l->dernier = elem;
++l->taille;
}
void insereElement(liste* l, element * avant,element* elem)
{
elem->suivant=avant->suivant;
avant->suivant = elem;
if(avant==l->dernier)
l->dernier = elem;
++l->taille;
}
void trieListe(liste* l)
{
/* implémentation "classique" du tri à bulles, par exemple */
}
void suppressElement(liste* l, element* todel)
{
/* cherchons l'élément qui précède celui à supprimer */
element* temp=l->premier;
/* c'est peut être le premier */
if(temp==todel)
{
/*et unique */
if(todel==l->dernier)
{
delete temp;
l->premier = NULL;
l->dernier = NULL;
}
else
{
/* sinon, celui qui suit l'élément à supprimer devient le premier
* element de la liste
*/
l->premier = temp->suivant;
free(temp);
--l->taille;
}
}
else
{
while(temp->suivant!=todel)
temp=temp->suivant;
/* si l'élément à supprimer est le dernier */
if(todel=l->dernier)
{
/* celui qui le précède devient le dernier */
l->dernier = temp;
}
/* quoi qu'il en soit, on rattache l'élément qui précède
* celui à supprimer à celui qui suit l'élément à supprimer
*/
temp->suivant=todel->suivant;
/* on libère la mémoire */
free(todell);
}
/* et on décrémente la taille */
--l->taille;
}
void detruitListe(liste* l)
{
element* temp;
while(l->premier)
{
temp=l->premier->next;
free(premier);
l->premier = temp;
}
free(l);
} |
Partager