0% ont trouvé ce document utile (0 vote)
15 vues7 pages

C 3

Le document présente les listes comme structures de données fondamentales, en détaillant les listes contiguës (tableaux dynamiques) et les listes chaînées. Il décrit leurs caractéristiques, opérations et algorithmes associés, ainsi que les différences entre les deux types de listes. Des exercices pratiques sont également proposés pour renforcer la compréhension des concepts abordés.

Transféré par

Meissa Linda
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 DOCX, PDF, TXT ou lisez en ligne sur Scribd
0% ont trouvé ce document utile (0 vote)
15 vues7 pages

C 3

Le document présente les listes comme structures de données fondamentales, en détaillant les listes contiguës (tableaux dynamiques) et les listes chaînées. Il décrit leurs caractéristiques, opérations et algorithmes associés, ainsi que les différences entre les deux types de listes. Des exercices pratiques sont également proposés pour renforcer la compréhension des concepts abordés.

Transféré par

Meissa Linda
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 DOCX, PDF, TXT ou lisez en ligne sur Scribd

📌 Cours sur les Listes

Les listes sont des structures de données fondamentales utilisées pour stocker un
ensemble d'éléments. Il existe deux types principaux de listes :

1. Les listes contiguës (Tableaux dynamiques)

2. Les listes chaînées

1️ Les Listes Contiguës (Tableaux Dynamiques)

Une liste contiguë est une structure de données où les éléments sont stockés de
manière séquentielle en mémoire (comme un tableau).

📌 Caractéristiques :

 Chaque élément est accessible directement par son indice.


 La taille de la liste est généralement fixe (mais peut être agrandie si nécessaire).
 Les opérations d'accès sont rapides (O(1)), mais l'ajout ou la suppression
d'éléments peut être coûteux (O(n)).

1 2 4 5 7 9
Lire(pos) ;
Pour i allant de pos a N-1 faire
T[i]T[i+1] ;
Pour i allant de N/2 a N+1 faire
T[i+1]T[1] ;
Fin
T[N/2]=x ;

📌 Opérations sur une Liste Contiguë :

1. Insertion d'un élément en fin (O(1)) ou au milieu (O(n))


2. Suppression d'un élément (O(n))
3. Accès à un élément par son indice (O(1))
4. Recherche d’un élément (O(n) en général)
2
️. Les Listes Chaînées

Une liste chaînée est une structure de données où chaque élément (appelé nœud)
contient :

 Une valeur
3 @
 Un lien vers le nœud suivant

📌 Caractéristiques : List L

Tet=@100

3 @130
5 @101
@100
@130
2 null
7 @140 @101
@140  Les éléments ne sont pas stockés de manière contiguë en mémoire.

 La taille est dynamique (ajout et suppression faciles).

 L'accès à un élément nécessite de parcourir la liste (O(n)).

📌 Types de Listes Chaînées :

1. Liste chaînée simple (chaque nœud pointe vers le suivant)

2. Liste doublement chaînée (chaque nœud a un lien vers le suivant et le précédent)


7 @140 suiv

3. Liste circulaire (le dernier nœud pointe vers le premier)

📌 Opérations sur une Liste Chaînée :

1. Insertion en début (O(1)) ou au milieu (O(n))

2. Suppression d'un élément (O(n))

3. Recherche d'un élément (O(n))

4. 📌 Comparaison des Deux Types de Listes


Liste Contiguë (Tableau
Caractéristiques Liste Chaînée
Dynamique)
Accès direct ✅ O(1) (indice) ❌ O(n) (parcours)
❌ O(n) (doit décaler les
Insertion/Suppression ✅ O(1) en tête
éléments)
📌 Espace fixe (allocation en
Mémoire 📌 Allocation dynamique
bloc)
🔹 Manipulation simple, accès 🔹 Structures évolutives et
Utilisation
rapide dynamiques

Noeud 4 null
@130
Temp=Tete
Tete =@130
X=3 3 @13 @13
X=4 0

Structure Noeud
Valeur: entier
Suivant: Noeud
P:Noeud
Fin Structure

Algorithme Liste_Chainee
Var
tete, Nouveau, Temp: Noeud;
x: entier;

Début
tete ← Null // Initialisation de la liste chaînée vide

// Ajout de plusieurs éléments en tête de liste


Répéter
Ecrire("Entrer une valeur (ou -1 pour arrêter) : ")
Lire(x)

Si x ≠ -1 Alors
Allouer(Nouveau)
[Link] ← x
Nouveau^.Suivant ← tete
tete ← Nouveau
Fin Si
Jusqu'à x = -1
// Affichage de la liste chaînée
Temp ← tete
Tant que Temp ≠ Null Faire
Afficher([Link])
Temp ← [Link]
Fin Tant que
Fin
Algorithme 1 : Suppression d’un élément recherché

Tet=@100 x=5 temp=Tet prec=temp [Link]==x

Tantque( [Link] !=x)&&([Link] !=null)

Prec =temp ;

Temp=[Link] ;

Prec=@100 Temp=@130

[Link]=[Link]

li

3 @130
5 @101
@100
@130
2 null
7 @140 @101
@140

Algorithme Supprimer_Element
Var
tete, Temp, Prec: Noeud;
x: entier;

Début
Ecrire("Entrer la valeur à supprimer : ")
Lire(x)

Temp ← tete
Prec ← Null

// Recherche de l'élément à supprimer


Tant que Temp ≠ Null et [Link] ≠ x Faire
Prec ← Temp
Temp ← [Link]
Fin Tant que

Si Temp = Null Alors


Ecrire("Élément non trouvé")
Sinon
// Si l'élément est en tête de liste
Si Prec = Null Alors
tete ← [Link]
Sinon
[Link] ← [Link]
Fin Si
Libérer(Temp) // Libérer la mémoire du nœud supprimé
Ecrire("Élément supprimé")
Fin Si
Fin

✅ Algorithme 2 : Recherche d’un élément dans la liste

Algorithme Rechercher_Element
Var
tete, Temp: Noeud;
x: entier;
Trouve: booléen

Début
Ecrire("Entrer la valeur à rechercher : ")
Lire(x)

Temp ← tete
Trouve ← Faux

Tant que Temp ≠ Null et Trouve = Faux Faire


Si [Link] = x Alors
Trouve ← Vrai
Sinon
Temp ← [Link]
Fin Si
Fin Tant que
Si(Temp=tete) Alors

Ecrire("pos1") ;

Si Trouve Alors
Ecrire("Élément trouvé")
Sinon
Ecrire("Élément non trouvé")
Fin Si
Fin
Exercice 1 :

Soit L une liste d’entiers. Écrire une procédure qui affiche l’élément du milieu de la liste
en utilisant un seul parcours.

n/2+1

Tet=@100 temp=tet=@100 p=tet=@100

Tet=@100 temp=tet=@100 p=tet=@100

Temp =[Link] ;p=[Link]

temp=@130 p=@100

temp=@101 p=@100

temp=@140 p=@130

temp=null p=@130

temp=tet p=tet

echange=0

tanque([Link] !=null)
temp=[Link] ;

si(echange mode 2 ==0 && echange !=0){

p=[Link]

echange=echange+1 ;

3 @130
5 @101
@100
@130
2 null
7 @140 @101
@140

Exercice 2 :

Soient deux listes chaînées d’entiers. Écrire les fonctions permettant de vérifier si elles
sont similaires ou comparables.

 Deux listes sont similaires si elles contiennent les mêmes éléments, mais pas
forcément aux mêmes positions.

Exemple : {9,6,7,6,3,6,1,9} et {1,3,6,6,6,7,9,9} sont similaires.

 Deux listes sont comparables si elles contiennent le même ensemble de valeurs,


sans prendre en compte la fréquence d’apparition des éléments.

Exemple : {1,3,6,7,9} et {9,6,7,6,3,6,1,9} sont comparables.

Vous aimerez peut-être aussi