Télécharger la présentation
1
Structures de données élémentaires
2
Structures élémentaires
Liste Matrice Pile File Liste chaînée Liste doublement chaînée Liste chaînée circulaire Liste doublement chaînée circulaire
3
Liste (Array) Contient un nombre prédéfini d’espaces pouvant contenir chacun un élément. On identifie les espaces à l’aide d’un indice. 1 2 3 4 5
4
Matrice (Matrix) Contient un nombre prédéfini d’espaces pouvant contenir chacun un élément. À la différence de la liste à un seul indice, on parle ici de tableau à 2 indices. (1,1) (1,2) (1,3) (2,1) (2,2) (2,3) (3,1) (3,2) (3,3)
5
Pile (Stack) La pile est un espace où on peut accumuler des éléments.
On ne peut retirer que le plus jeune des éléments ajouté. Les tours d’Hanoï. 4 3 2 1
6
File (Queue) La file est un espace où on peut accumuler des éléments.
On ne peut retirer que le plus vieux des éléments ajouté Distributeur de boissons gazeuses. 6 5 4 3 2 1
7
Liste chaînée (Linked List)
La liste chaînée permet d’insérer un élément dans une liste ordonnée d’éléments. L’ajout peut se faire n’importe où. On peut retirer n’importe lequel des élément de la liste à tout moment.
8
Liste chaînée (suite) Exemple de liste chaînée Tête Queue 1 2 3
9
Liste chaînée (suite) Ajout à une liste chaînée Tête Queue 1 2 3 1b
10
Liste chaînée (suite) Exemple de liste chaînée Tête Queue 1 2 3
11
Liste chaînée (suite) Suppression dans une liste chaînée Tête Queue 1
2 3
12
Liste chaînée en code struct infovente{ int nosequentiel; /* Champs */
}; struct record{ struct infovente vente; struct record *suivant;
13
Liste chaînée en code struct record* head; struct record* queue;
void init(){ head = NULL; queue = NULL; addItem(/* Champs */); }
14
Liste chaînée en code struct record * findItem(const int no){
if (head==queue) return NULL; struct record * ptr = head; while (ptr->suivant!=NULL){ ptr=ptr->suivant; if (ptr->vente.nosequentiel==no) return ptr; } return NULL;
15
Liste chaînée en code struct record * findPrev(const int no){
if (head==queue) return NULL; struct record * ptr = head; while (ptr->suivant!=NULL){ if (ptr->suivant->vente.nosequentiel==no) return ptr; ptr=ptr->suivant; } return NULL;
16
Liste chaînée en code void addItem(/* Champs */){ struct record* ni =
(struct record*)malloc(sizeof(struct record)); ni->vente.nosequentiel = ((queue==NULL)?0:queue->vente.nosequentiel+1); /* Affectation des champs */ ni->suivant = NULL; if (queue != NULL) queue->suivant = ni; queue = ni; if (head==NULL) head = ni; }
17
Liste chaînée en code void removeItem(const int no){
if ((no<1)||(head==queue)) return; struct record * ptr = findPrev(no); if (ptr!=NULL){ struct record * tptr = ptr->suivant; if (queue==ptr->suivant) queue=ptr; ptr->suivant = ptr->suivant->suivant; free(tptr); }
18
Liste chaînée circulaire (Circularly Linked List)
Exemple de liste chaînée circulaire Tête Queue 1 2 3
19
Liste doublement chaînée (Doubly Linked List)
Exemple de liste doublement chaînée Tête Queue 1 2 3
20
Liste doublement chaînée circulaire (Circularly Doubly Linked List)
Exemple de liste doublement chaînée circulaire Tête Queue 1 2 3
Présentations similaires
© 2024 SlidePlayer.fr Inc.
All rights reserved.