0% ont trouvé ce document utile (0 vote)
21 vues17 pages

Introduction aux listes chaînées en C

Transféré par

sindashm18
Copyright
© © All Rights Reserved
Nous prenons très au sérieux les droits relatifs au contenu. Si vous pensez qu’il s’agit de votre contenu, signalez une atteinte au droit d’auteur ici.
Formats disponibles
Téléchargez aux formats PDF, TXT ou lisez en ligne sur Scribd
0% ont trouvé ce document utile (0 vote)
21 vues17 pages

Introduction aux listes chaînées en C

Transféré par

sindashm18
Copyright
© © All Rights Reserved
Nous prenons très au sérieux les droits relatifs au contenu. Si vous pensez qu’il s’agit de votre contenu, signalez une atteinte au droit d’auteur ici.
Formats disponibles
Téléchargez aux formats PDF, TXT ou lisez en ligne sur Scribd

Chapitre 11:Les listes chainée

2021-2022 SAHAR TRIGUI 193

Introduction
Une liste chaînée est une structure linéaire d’éléments (ou bien nœuds, cellule,
…) de même type et qui n'a pas de dimension fixe à sa création.
les éléments d’une liste chaînée sont éparpillés dans la mémoire et reliés entre
eux par des pointeurs.
Une liste chaînée est accessible uniquement par sa tête de liste c’est-à-dire son
premier élément.
chaque élément indique l'emplacement de l'élément suivant. Le dernier
élément de la liste ne pointe sur rien (NULL).

194
Introduction
Exemple d’une liste chaînée: ll=(t1,t2,t3,t4)

cellule
premier

t1 t2 t3 t4

adresse du
information
suivant

premier est une variable de type pointeur (adresse du premier élément)

Si premier est null alors alors on constate que la liste est vide

195

Introduction
La longueur d’une liste est le nombre de ses éléments.
Elle est nulle si la liste est vide
Elle augmente de 1 lors de l’ajout d’un élément
Elle diminue de 1 lors de la suppression d’un élément

2021-2022 SAHAR TRIGUI 196


Les types de listes chaînées
Liste chaînée simple constituée d'éléments reliés entre eux par des pointeurs.
Liste chaînée ordonnée où l'élément suivant est plus grand que le précédent.
L'insertion et la suppression d'élément se font de façon à ce que la liste reste
triée.
Liste doublement chaînée où chaque élément dispose non plus d'un mais de
deux pointeurs pointant respectivement sur l'élément précédent et l'élément
suivant. Ceci permet de lire la liste dans les deux sens, du premier vers le dernier
élément ou inversement.
Liste circulaire où le dernier élément pointe sur le premier élément de la liste.
S'il s'agit d'une liste doublement chaînée alors de premier élément pointe
également sur le dernier.
2021-2022 SAHAR TRIGUI 197

Opérations sur les listes


creer_liste_vide: créer une liste vide => opération de création

liste_vide: vérifier si une liste est vide ou non Opérations de


chercher: chercher un élément donné dans une liste consultation

ajouter: ajouter un élément dans une liste


supprimer: supprimer un élément donné d’une liste Opérations de
modification
visiter: visiter les éléments et appliquer un traitement donné

198
Déclaration d’une liste
Une cellule d’une liste chaînée est constitué d’un champs qui contient une information ou
donnée et d’un autre champ qui contient un pointeur vers une autre cellule de même structure.
Une liste chaînée est définie comme suit:
struct cellule
{
element information;
struct cellule *suivant;
};
typedef struct cellule cellule;
Le type « element » de « information » dépend des valeurs contenues dans la liste : entier,
chaîne de caractères, etc.

199

Déclaration d’une liste


La déclaration d’une liste chaînée consiste à définir son premier élément.
La déclaration d’un pointeur vers le premier élément de la liste est :
cellule *premier;
L’initialisation d’une liste vide:
premier = NULL.
premier NULL

On peut créer une fonction creer_liste qui permet de créer une liste vide:
void creer_liste_vide(cellule *premier)
{ premier = NULL ; }

200
Ajout du premier élément
Après la déclaration et la création de la liste, on peut ajouter un élément.
Allocation de la mémoire pour le nouveau élément.
nouveau = (cellule *) malloc(sizeof(cellule));
Lecture de l’information, par saisie, affectation, …
Le champ « suivant » de « nouveau » prend comme valeur celui de la cellule premier.
nouveau -> suivant = NULL;// nouveau -> suivant = premier;
La nouvelle cellule devient le premier (tête) de la liste
premier = nouveau; // le pointeur premier pointe maintenant sur p

premier

t1

201

Création d’une liste


La création de n entiers dans une liste consiste à allouer n espaces mémoires, saisir les
n informations et lier les éléments.

202
Affichage d’une liste
L’affichage d’une liste consiste à afficher l’information contenue dans le champ
information de chaque cellule. L’opération s ’arrête lorsque le champ suivant pointe vers
le NULL.

203

Ajouter au début d’une liste

premier

t1 t2 t3 t4

t5

204
Ajouter à la fin d’une liste

premier
t1 t2 t3

t4

t5

205

Ajouter à une position

206
Supprimer le premier élément d’une liste

2021-2022 SAHAR TRIGUI 207

Supprimer le dernier élément

2021-2022 SAHAR TRIGUI 208


Supprimer à une position

2021-2022 SAHAR TRIGUI 209

Vérifier l’existence d’un élément dans


une liste

2021-2022 SAHAR TRIGUI 210


Vider une liste

2021-2022 SAHAR TRIGUI 211

Chapitre 12:Les piles

2021-2022 SAHAR TRIGUI 212


Introduction
Une pile est une structure de données de taille variable, initialement vide, sur
laquelle plusieurs opérations sont applicables.
Une pile regroupe plusieurs éléments et obéie à la loi « dernier rentré,
premier sorti » ou « Last In, First Out (LIFO) ».

Les opérations applicables sur une structure de données pile sont:


Opérations de consultation: Obtenir des renseignement sur l’état de la pile (vide et
dernier)
Opérations de modification: Modifier l’état d’une pile (empiler et dépiler)
Opérations de création: Créer la structure de données pile (créer_pile)

2021-2022 SAHAR TRIGUI 213

Introduction
Les éléments qui forment une pile sont repérés par un point d’accès appelé
sommet.
Pour gérer une pile, on n’utilise que son sommet.
Un élément ne peut être inséré qu'au sommet de la pile,
Un élément ne peut être supprimé que du sommet de la pile.
Exemple: Empiler ‘b’ Dépiler ‘b’

sommet
sommet
‘b’
‘a’ ‘a’

2021-2022 SAHAR TRIGUI 214


Opérations sur une pile
pile creer_pile(): créer une pile vide.
int vide (pile p): vérifier si la pile est vide ou non.
element dernier (pile p): afficher le dernier élément empiler.
pile empiler (pile p, element e): ajouter un élément à la pile
pile depiler (pile p): supprimer le dernier élément empiler dans la pile
Remarques:
Un empilement suivit immédiatement d’un dépilement laisse la pile inchangée
Un dépilement suivit immédiatement de l’empilement de l’élément dépilé laisse la
pile inchangée.
L’opération de dépilement suppose que la pile est non vide.

2021-2022 SAHAR TRIGUI 215

Représentation physique d‘une pile


Représentation contiguë
 Elle permet de mémoriser les éléments d’une pile dans un espace contiguë (sous
forme d’un tableau).
n #define n 100
struct pile
Partie non utilisée entre sommet+1 et n {
element information[n];
int sommet;
‘b’ };
Partie utilisée entre 1 et sommet (=2)
1 ‘a’ typedef struct pile pile;

NB: Le type « element » de « information » dépend des valeurs contenues dans la liste : entier, réel, etc.

2021-2022 SAHAR TRIGUI 216


Représentation physique d‘une pile
Représentation chainée
Elle permet de mémoriser les éléments d’une pile dans des endroits quelconques en
mémoire centrale mais reliés entre eux.
Elle comporte un ensemble de nœuds où chacun se compose de deux champs:
information: contient un élément de la pile.
suivant: mémorise un pointeur sur l’élément précédemment empilé.
L’accès aux éléments d’une pile se fait à l’aide du point d’accès sommet qui
initialement pointe vers le NULL.

sommet

‘b’ ‘a’

2021-2022 SAHAR TRIGUI 217

Représentation physique d‘une pile


struct cellule
{
element information;
struct cellule *suivant;
};
typedef struct cellule cellule;

NB: Le type « element » de « information » dépend des valeurs contenues dans la liste : entier,
réel, etc.

2021-2022 SAHAR TRIGUI 218


Matérialisation d’une pile
Représentation contiguë

2021-2022 SAHAR TRIGUI 219

Matérialisation d’une pile

2021-2022 SAHAR TRIGUI 220


Matérialisation d’une pile

2021-2022 SAHAR TRIGUI 221

Matérialisation d’une pile


Représentation chainée

2021-2022 SAHAR TRIGUI 222


Matérialisation d’une pile

2021-2022 SAHAR TRIGUI 223

Matérialisation d’une pile

2021-2022 SAHAR TRIGUI 224


Exercice
Ecrire un programme en C qui permet de lire une expression avec des
parenthèses supposée valide (câd nombre de parenthèses ouvrantes = nombre
de parenthèses fermantes) et d’afficher toutes les sous-expressions entre
parenthèses en commençant par la plus interne.
Par exemple, si l’expression saisie est: a+((b*c)-d) alors le programme doit
afficher
(b*c)
((b*c)-d)

2021-2022 SAHAR TRIGUI 225

Vous aimerez peut-être aussi