Dans cet article , on va rappeler en quelque lignes comment déclarer une liste chaînée , puis on va donner des fonctions souvent utilisées et souvent demandées a l'examen dans les listes chaînées sous formes de questions :
Déclarations d'une Liste , ajouter les éléments dans la liste , supprimer , trier ...
c'est fonctions comme indiqué dans le titre de cet article , elles sont incontournables , vous devez absolument les connaitre .
Déclarations d'une Liste , ajouter les éléments dans la liste , supprimer , trier ...
c'est fonctions comme indiqué dans le titre de cet article , elles sont incontournables , vous devez absolument les connaitre .
Comment déclarer une liste chaînée
La liste chaînée est un enchaînement de plusieurs éléments . pour créer la liste en commence par créer ses éléments .
les éléments de la liste chaînée sont toujours des type personnalisé c-a-d des structures , ces structures contient toujours :
- des Champs pour stocker les informations .
- un Champ pour le pointeur contenant l'adresse de l’élément suivant .
la création de la liste chaînée commence toujours par la création d'un pointeur qui pointe sur NULL .
pour accéder a la liste chaînée on est besoin juste du pointeur sur le premier élément . en le note souvent tête ( la tête de la liste ) ou tous simplement L .
pour accéder a la liste chaînée on est besoin juste du pointeur sur le premier élément . en le note souvent tête ( la tête de la liste ) ou tous simplement L .
Les fonctions
Soit la liste déclarée comme suivant :typedef struct element{ // Les champs de stockage int a; // Le champ du chainage struct element * suivant; }; element * L = NULL ; // la liste contient aucun élément .L est le pointeur sur le premier élément de la liste , il pointe sur NULL : la liste est vide .
Fonction 1 : element * creerElement( int a )
element * creerElement( int a ){ element * P; // En langage C P = ( element * )malloc( sizeof(element) ); // En langage C++ P = new element; // le reste est valable pour les 2 langages P->a = a; P->suivant = NULL; return P; }
Fonction 2 : element * ajoutElement_fin( element * L , int a )
Maintenant on a la liste , en veut ajouter des éléments a la fin de cette liste .element * ajoutElement_fin( element * L , int a ){ element * P; P = creerElement( a ); if ( L == NULL ) { return P; } else { element * R = L; while( R->suivant != NULL ) { R = R->suivant; } R->suivant = P; return L; } }
Fonction 3 : element * ajoutElement_debut( element * L , int a )
element * ajoutElement_debut( element * L , int a ){ element * P; P = creerElement( a ); P->suivant = L; return P; }
Fonction 4 : void trierListe( element * L )
void trierListe( element * L ){ if ( L != NULL ){ element * min = L, *R; while ( min->suivant != NULL ){ R = min->suivant; while ( R != NULL ) { if ( min->a > R->a ) { c = R->a; R->a = min->a; min->a = c; } R=R->suivant; } min = min->suivant; } } }
Fonction 5 : element * ajout_milieu( element * L , int a )
si on a une liste chaînée triée on peut ajouter un élément a cette liste dans sa place approprie pour que la liste reste triée .element * ajout_milieu( element * L , int a ){ element * P; P = creerElement( a ); if ( L==NULL ) return P; else { if ( L->a > a ) { P->suivant = L; return P; } else { element * R=L; while ( R->suivant->a < a ){ P->suivant = R->suivant; R->suivant = P; } return L; } } }
Fonction 6 : element * chercher( element * L , int a )
cette fonction revoit un pointeur sur l’élément cherché .element * chercher( element * L , int a ){ element * R = L; while ( R != NULL ) { if ( R->a == a ) return R; R = R->suivant; } return NULL; }
Aucun commentaire :
Enregistrer un commentaire