forked from sumn2u/learn-javascript
-
Notifications
You must be signed in to change notification settings - Fork 0
Commit
This commit does not belong to any branch on this repository, and may belong to a fork outside of the repository.
Translating the Linked List section of the miscellaneous/ chapter
- Loading branch information
1 parent
97576b5
commit e4709fc
Showing
1 changed file
with
130 additions
and
0 deletions.
There are no files selected for viewing
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,130 @@ | ||
--- | ||
chapter: 19 | ||
pageNumber: 98 | ||
description: Les Listes chaînées sont des structures de données linéaire qui sont utilisées pour stocker des élements appellés noeuds. Chaque noeud dans la liste contient deux parties, les informations (ou valeur) qu'il représente et la reférence (pointeur) vers l'élément suivant dans la séquence. Le dernier noeud de la liste pointe vers null, cela indique la fin de la liste. | ||
--- | ||
# Listes Chaînées | ||
|
||
Les Listes Chaînées représentent une des structures de données courantes qu'on retrouve dans tous les langages de programmation. Une Liste Chaînée est très simimlaire à un tableau normal en JavaScript. Il agit juste un petit peu différemment. | ||
|
||
Ici, chaque élément dans la liste est un objet séparé contenant un lien ou pointeur vers l'élément suivant. Il n'y pas de méthode ou fonction natif en JavaScript propre aux Listes Chaînées, c'est donc à nous de l'implémenter. En voici un exemple d'implémentation.  | ||
|
||
```javascript | ||
["un", "deux", "trois", "quatre"]; | ||
``` | ||
|
||
**Les types de Listes Chaînées** | ||
|
||
Il y a trois différents types de listes chaînées: | ||
|
||
1. **Les Listes Simplement Chaînées :** Chaque noeud contient seulement un pointeur vers l'élément suivant (noeud). | ||
2. **Les Listes Doublement Chaînées :** Il y a deux noeuds pour chaque noeud, un vers l'élément suivant et l'autre vers l'élement précedent. | ||
3. **Les Listes Chaînées Circulaires :** Une Liste Chaînée Circulaire forme une boucle en ayant le dernier noeud qui pointe vers le premier ou tout autre élément derrière lui. | ||
|
||
# Ajouter à la fin | ||
|
||
La méthode `add` est utilisée pour ajouter un noeud à la fin de la liste chaînée. | ||
|
||
```javascript | ||
class Node { | ||
constructor(data) { | ||
this.data = data | ||
this.next = null | ||
} | ||
} | ||
|
||
class LinkedList { | ||
constructor(head) { | ||
this.head = head | ||
} | ||
append = (value) => { | ||
const newNode = new Node(value) | ||
let current = this.head | ||
if (!this.head) { | ||
this.head = newNode | ||
return | ||
} | ||
while (current.next) { | ||
current = current.next | ||
} | ||
current.next = newNode | ||
} | ||
} | ||
``` | ||
|
||
# Retirer à la fin | ||
|
||
La méthode `pop` est utilisée pour supprimer le dernier noeud de la liste chaînée. | ||
|
||
```javascript | ||
class Node { | ||
constructor(data) { | ||
this.data = data | ||
this.next = null | ||
} | ||
} | ||
|
||
class LinkedList { | ||
constructor(head) { | ||
this.head = head | ||
} | ||
pop = () => { | ||
let current = this.head | ||
while (current.next.next) { | ||
current = current.next | ||
} | ||
current.next = current.next.next | ||
} | ||
} | ||
``` | ||
|
||
# Ajouter au début | ||
|
||
La méthode `prepend` est créée pour ajouter une valeur au début de la liste chaînée. | ||
|
||
```javascript | ||
class Node { | ||
constructor(data) { | ||
this.data = data | ||
this.next = null | ||
} | ||
} | ||
|
||
class LinkedList { | ||
constructor(head) { | ||
this.head = head | ||
} | ||
prepend = (value) => { | ||
const newNode = new Node(value) | ||
if (!this.head) { | ||
this.head = newNode | ||
} | ||
else { | ||
newNode.next = this.head | ||
this.head = newNode | ||
} | ||
} | ||
} | ||
``` | ||
|
||
# Retirer au début | ||
|
||
La méthode `shift` est créée pour retirer le premier élément de la Liste Chaînée. | ||
|
||
```javascript | ||
class Node { | ||
constructor(data) { | ||
this.data = data | ||
this.next = null | ||
} | ||
} | ||
|
||
class LinkedList { | ||
constructor(head) { | ||
this.head = head | ||
} | ||
shift = () => { | ||
this.head = this.head.next | ||
} | ||
} | ||
``` |