mirror of
https://github.moeyy.xyz/https://github.com/trekhleb/javascript-algorithms.git
synced 2024-12-25 22:46:20 +08:00
Update images for Linked List, Doubly Linked List, Queue, and Stack. (#915)
* Update linked list image. * Update Queue image. * Update Stack image. * Update Doubly Linked List image.
This commit is contained in:
parent
fc47fff089
commit
dc65485196
@ -9,7 +9,9 @@ _Lea esto en otros idiomas:_
|
||||
|
||||
En informática, una **lista doblemente enlazada** es una estructura de datos relacionados que consta de un conjunto de registros conectados secuencialmente llamados nodos. Cada nodo contiene dos campos, llamados enlaces, que son referencias al nodo anterior y al siguiente en la secuencia de nodos. Los enlaces anterior y siguiente de los nodos inicial y final, apuntan respectivamente a algún tipo de terminador (normalmente un nodo centinela o nulo), facilitando así el recorrido de la lista. Si solo hay un nodo nulo, la lista se enlaza circularmente a través este. Puede conceptualizarse como dos listas enlazadas individualmente formadas a partir de los mismos elementos de datos, pero en órdenes secuenciales opuestos.
|
||||
|
||||
![Lista doblemente enlazada](https://upload.wikimedia.org/wikipedia/commons/5/5e/Doubly-linked-list.svg)
|
||||
![Lista doblemente enlazada](./images/doubly-linked-list.jpeg)
|
||||
|
||||
*Made with [okso.app](https://okso.app)*
|
||||
|
||||
Los dos enlaces de un nodo permiten recorrer la lista en cualquier dirección. Si bien agregar o eliminar un nodo en una lista doblemente enlazada requiere cambiar más enlaces que las mismas operaciones en una lista enlazada individualmente, las operaciones son más simples y potencialmente más eficientes (para nodos que no sean los primeros) porque no hay necesidad de realizar un seguimiento del nodo anterior durante el recorrido o no es necesario recorrer la lista para encontrar el nodo anterior, de modo que se pueda modificar su enlace.
|
||||
|
||||
|
@ -2,7 +2,9 @@
|
||||
|
||||
コンピュータサイエンスにおいて、**双方向リスト**はノードと呼ばれる一連のリンクレコードからなる連結データ構造です。各ノードはリンクと呼ばれる2つのフィールドを持っていて、これらは一連のノード内における前のノードと次のノードを参照しています。最初のノードの前のリンクと最後のノードの次のリンクはある種の終端を示していて、一般的にはダミーノードやnullが格納され、リストのトラバースを容易に行えるようにしています。もしダミーノードが1つしかない場合、リストはその1つのノードを介して循環的にリンクされます。これは、それぞれ逆の順番の単方向のリンクリストが2つあるものとして考えることができます。
|
||||
|
||||
![Doubly Linked List](https://upload.wikimedia.org/wikipedia/commons/5/5e/Doubly-linked-list.svg)
|
||||
![Doubly Linked List](./images/doubly-linked-list.jpeg)
|
||||
|
||||
*Made with [okso.app](https://okso.app)*
|
||||
|
||||
2つのリンクにより、リストをどちらの方向にもトラバースすることができます。双方向リストはノードの追加や削除の際に、片方向リンクリストと比べてより多くのリンクを変更する必要があります。しかし、その操作は簡単で、より効率的な(最初のノード以外の場合)可能性があります。前のノードのリンクを更新する際に前のノードを保持したり、前のノードを見つけるためにリストをトラバースする必要がありません。
|
||||
|
||||
@ -25,7 +27,7 @@ Add(value)
|
||||
end if
|
||||
end Add
|
||||
```
|
||||
|
||||
|
||||
### 削除
|
||||
|
||||
```text
|
||||
@ -62,7 +64,7 @@ Remove(head, value)
|
||||
return false
|
||||
end Remove
|
||||
```
|
||||
|
||||
|
||||
### 逆トラバース
|
||||
|
||||
```text
|
||||
@ -76,7 +78,7 @@ ReverseTraversal(tail)
|
||||
end while
|
||||
end Reverse Traversal
|
||||
```
|
||||
|
||||
|
||||
## 計算量
|
||||
|
||||
## 時間計算量
|
||||
|
@ -12,7 +12,9 @@ _Read this in other languages:_
|
||||
센티넬 노드가 하나만 있으면, 목록이 센티넬 노드를 통해서 원형으로 연결됩니다.
|
||||
동일한 데이터 항목으로 구성되어 있지만, 반대 순서로 두 개의 단일 연결 리스트로 개념화 할 수 있습니다.
|
||||
|
||||
![이중 연결 리스트](https://upload.wikimedia.org/wikipedia/commons/5/5e/Doubly-linked-list.svg)
|
||||
![이중 연결 리스트](./images/doubly-linked-list.jpeg)
|
||||
|
||||
*Made with [okso.app](https://okso.app)*
|
||||
|
||||
두 개의 노드 링크를 사용하면 어느 방향으로든 리스트를 순회할 수 있습니다.
|
||||
이중 연결 리스트에서 노드를 추가하거나 제거하려면, 단일 연결 리스트에서 동일한 작업보다 더 많은 링크를 변경해야 하지만, 첫 번째 노드 이외의 노드인 경우 작업을 추적할 필요가 없으므로 작업이 더 단순해져 잠재적으로 더 효율적입니다.
|
||||
@ -37,7 +39,7 @@ Add(value)
|
||||
end if
|
||||
end Add
|
||||
```
|
||||
|
||||
|
||||
### 삭제
|
||||
|
||||
```text
|
||||
@ -74,7 +76,7 @@ Remove(head, value)
|
||||
return false
|
||||
end Remove
|
||||
```
|
||||
|
||||
|
||||
### 역순회
|
||||
|
||||
```text
|
||||
@ -88,7 +90,7 @@ ReverseTraversal(tail)
|
||||
end while
|
||||
end Reverse Traversal
|
||||
```
|
||||
|
||||
|
||||
## 복잡도
|
||||
|
||||
## 시간 복잡도
|
||||
|
@ -18,7 +18,9 @@ sentinel node, then the list is circularly linked via the sentinel node. It can
|
||||
be conceptualized as two singly linked lists formed from the same data items,
|
||||
but in opposite sequential orders.
|
||||
|
||||
![Doubly Linked List](https://upload.wikimedia.org/wikipedia/commons/5/5e/Doubly-linked-list.svg)
|
||||
![Doubly Linked List](./images/doubly-linked-list.jpeg)
|
||||
|
||||
*Made with [okso.app](https://okso.app)*
|
||||
|
||||
The two node links allow traversal of the list in either direction. While adding
|
||||
or removing a node in a doubly linked list requires changing more links than the
|
||||
|
@ -11,7 +11,9 @@ somente um nó sentinela, então a lista é ligada circularmente através do nó
|
||||
sentinela. Ela pode ser conceitualizada como duas listas individualmente ligadas
|
||||
e formadas a partir dos mesmos itens, mas em ordem sequencial opostas.
|
||||
|
||||
![Doubly Linked List](https://upload.wikimedia.org/wikipedia/commons/5/5e/Doubly-linked-list.svg)
|
||||
![Doubly Linked List](./images/doubly-linked-list.jpeg)
|
||||
|
||||
*Made with [okso.app](https://okso.app)*
|
||||
|
||||
Os dois nós ligados permitem a travessia da lista em qualquer direção.
|
||||
Enquanto adicionar ou remover um nó de uma lista duplamente vinculada requer
|
||||
@ -41,7 +43,7 @@ Add(value)
|
||||
end if
|
||||
end Add
|
||||
```
|
||||
|
||||
|
||||
### Deletar
|
||||
|
||||
```text
|
||||
@ -78,7 +80,7 @@ Remove(head, value)
|
||||
return false
|
||||
end Remove
|
||||
```
|
||||
|
||||
|
||||
### Travessia reversa
|
||||
|
||||
```text
|
||||
@ -92,7 +94,7 @@ ReverseTraversal(tail)
|
||||
end while
|
||||
end Reverse Traversal
|
||||
```
|
||||
|
||||
|
||||
## Complexidades
|
||||
|
||||
## Complexidade de Tempo
|
||||
|
@ -10,14 +10,16 @@
|
||||
Двусвязный список можно представить, как два связных списка, которые образованы из
|
||||
одних и тех же данных, но расположенных в противоположном порядке.
|
||||
|
||||
![Двусвязный список](https://upload.wikimedia.org/wikipedia/commons/5/5e/Doubly-linked-list.svg)
|
||||
![Двусвязный список](./images/doubly-linked-list.jpeg)
|
||||
|
||||
*Made with [okso.app](https://okso.app)*
|
||||
|
||||
Две ссылки позволяют обходить список в обоих направлениях. Добавление и
|
||||
удаление узла в двусвязном списке требует изменения большего количества ссылок,
|
||||
чем аналогичные операции в связном списке. Однако данные операции проще и потенциально
|
||||
более эффективны (для некорневых узлов) - при обходе не нужно следить за предыдущим
|
||||
узлом или повторно обходить список в поиске предыдущего узла, плюс его ссылка
|
||||
может быть изменена.
|
||||
может быть изменена.
|
||||
|
||||
## Псевдокод основных операций
|
||||
|
||||
@ -38,7 +40,7 @@ Add(value)
|
||||
end if
|
||||
end Add
|
||||
```
|
||||
|
||||
|
||||
### Удаление
|
||||
|
||||
```text
|
||||
@ -75,7 +77,7 @@ Remove(head, value)
|
||||
return false
|
||||
end Remove
|
||||
```
|
||||
|
||||
|
||||
### Обратный обход
|
||||
|
||||
```text
|
||||
@ -89,7 +91,7 @@ ReverseTraversal(tail)
|
||||
end while
|
||||
end Reverse Traversal
|
||||
```
|
||||
|
||||
|
||||
## Сложность
|
||||
|
||||
## Временная сложность
|
||||
|
@ -2,7 +2,9 @@
|
||||
|
||||
在计算机科学中, 一个 **双向链表(doubly linked list)** 是由一组称为节点的顺序链接记录组成的链接数据结构。每个节点包含两个字段,称为链接,它们是对节点序列中上一个节点和下一个节点的引用。开始节点和结束节点的上一个链接和下一个链接分别指向某种终止节点,通常是前哨节点或null,以方便遍历列表。如果只有一个前哨节点,则列表通过前哨节点循环链接。它可以被概念化为两个由相同数据项组成的单链表,但顺序相反。
|
||||
|
||||
![Doubly Linked List](https://upload.wikimedia.org/wikipedia/commons/5/5e/Doubly-linked-list.svg)
|
||||
![Doubly Linked List](./images/doubly-linked-list.jpeg)
|
||||
|
||||
*Made with [okso.app](https://okso.app)*
|
||||
|
||||
两个节点链接允许在任一方向上遍历列表。
|
||||
|
||||
@ -29,7 +31,7 @@ Add(value)
|
||||
end if
|
||||
end Add
|
||||
```
|
||||
|
||||
|
||||
### 删除
|
||||
|
||||
```text
|
||||
@ -66,7 +68,7 @@ Remove(head, value)
|
||||
return false
|
||||
end Remove
|
||||
```
|
||||
|
||||
|
||||
### 反向遍历
|
||||
|
||||
```text
|
||||
@ -80,7 +82,7 @@ ReverseTraversal(tail)
|
||||
end while
|
||||
end Reverse Traversal
|
||||
```
|
||||
|
||||
|
||||
## 复杂度
|
||||
|
||||
## 时间复杂度
|
||||
|
Binary file not shown.
After Width: | Height: | Size: 112 KiB |
@ -7,9 +7,9 @@ _Lee este artículo en otros idiomas:_
|
||||
[_Português_](README.pt-BR.md)
|
||||
[_English_](README.md)
|
||||
|
||||
En ciencias de la computaciòn una **lista enlazada** es una coleccion linear
|
||||
En ciencias de la computaciòn una **lista enlazada** es una coleccion linear
|
||||
de elementos de datos, en los cuales el orden linear no es dado por
|
||||
su posciòn fisica en memoria. En cambio, cada
|
||||
su posciòn fisica en memoria. En cambio, cada
|
||||
elemento señala al siguiente. Es una estructura de datos
|
||||
que consiste en un grupo de nodos los cuales juntos representan
|
||||
una secuencia. En su forma más sencilla, cada nodo está
|
||||
@ -24,7 +24,9 @@ acceso es lineal (y difícil de canalizar). Un acceso
|
||||
más rápido, como un acceso aleatorio, no es factible. Los arreglos
|
||||
tienen una mejor locazion en caché comparados con las listas lazadas.
|
||||
|
||||
![Linked List](https://upload.wikimedia.org/wikipedia/commons/6/6d/Singly-linked-list.svg)
|
||||
![Linked List](./images/linked-list.jpeg)
|
||||
|
||||
*Made with [okso.app](https://okso.app)*
|
||||
|
||||
## Pseudocódigo para operaciones básicas
|
||||
|
||||
|
@ -2,7 +2,9 @@
|
||||
|
||||
コンピュータサイエンスにおいて、**リンクリスト**はデータ要素の線形コレクションです。要素の順番はメモリ内の物理的な配置によっては決まりません。代わりに、各要素が次の要素を指しています。リンクリストはノードのグループからなるデータ構造です。最も単純な形式では、各ノードはデータとシーケンス内における次のノードへの参照(つまり、リンク)で構成されています。この構造はイテレーションにおいて任意の位置へ要素を効率的に挿入、削除することを可能にしています。より複雑なリンクリストではリンクをさらに追加することで、任意の要素の参照から要素を効率的に挿入、削除することを可能にしています。リンクリストの欠点はアクセスタイムが線形である(そして、パイプライン処理が難しい)ことです。ランダムアクセスのような高速なアクセスは実現不可能です。配列の方がリンクリストと比較して参照の局所性が優れています。
|
||||
|
||||
![Linked List](https://upload.wikimedia.org/wikipedia/commons/6/6d/Singly-linked-list.svg)
|
||||
![Linked List](./images/linked-list.jpeg)
|
||||
|
||||
*Made with [okso.app](https://okso.app)*
|
||||
|
||||
## 基本操作の擬似コード
|
||||
|
||||
@ -53,7 +55,7 @@ Contains(head, value)
|
||||
return true
|
||||
end Contains
|
||||
```
|
||||
|
||||
|
||||
### 削除
|
||||
|
||||
```text
|
||||
|
@ -8,7 +8,9 @@ _Read this in other languages:_
|
||||
|
||||
컴퓨터과학에서, **링크드 리스트**는 데이터 요소의 선형 집합이며, 이 집합에서 논리적 저장 순서는 메모리의 물리적 저장 순서와 일치하지 않습니다. 그 대신, 각각의 원소들은 자기 자신 다음의 원소를 가리킵니다. **링크드 리스트**는 순서를 표현하는 노드들의 집합으로 이루어져 있습니다. 간단하게, 각각의 노드들은 데이터와 다음 순서의 노드를 가리키는 레퍼런스로 이루어져 있습니다. (링크라고 부릅니다.) 이 자료구조는 순회하는 동안 순서에 상관없이 효율적인 삽입이나 삭제가 가능합니다. 더 복잡한 변형은 추가적인 링크를 더해, 임의의 원소 참조로부터 효율적인 삽입과 삭제를 가능하게 합니다. 링크드 리스트의 단점은 접근 시간이 선형이라는 것이고, 병렬처리도 하지 못합니다. 임의 접근처럼 빠른 접근은 불가능합니다. 링크드 리스트에 비해 배열이 더 나은 캐시 지역성을 가지고 있습니다.
|
||||
|
||||
![링크드 리스트](https://upload.wikimedia.org/wikipedia/commons/6/6d/Singly-linked-list.svg)
|
||||
![Linked List](./images/linked-list.jpeg)
|
||||
|
||||
*Made with [okso.app](https://okso.app)*
|
||||
|
||||
## 기본 연산에 대한 수도코드
|
||||
|
||||
@ -60,7 +62,7 @@ Contains(head, value)
|
||||
return true
|
||||
end Contains
|
||||
```
|
||||
|
||||
|
||||
### 삭제
|
||||
|
||||
```text
|
||||
|
@ -26,7 +26,9 @@ time is linear (and difficult to pipeline). Faster
|
||||
access, such as random access, is not feasible. Arrays
|
||||
have better cache locality as compared to linked lists.
|
||||
|
||||
![Linked List](https://upload.wikimedia.org/wikipedia/commons/6/6d/Singly-linked-list.svg)
|
||||
![Linked List](./images/linked-list.jpeg)
|
||||
|
||||
*Made with [okso.app](https://okso.app)*
|
||||
|
||||
## Pseudocode for Basic Operations
|
||||
|
||||
|
@ -18,7 +18,9 @@ pipeline). Acesso mais rápido, como acesso aleatório, não é viável.
|
||||
Arrays possuem uma melhor localização de cache em comparação
|
||||
com listas encadeadas (linked lists).
|
||||
|
||||
![Linked List](https://upload.wikimedia.org/wikipedia/commons/6/6d/Singly-linked-list.svg)
|
||||
![Linked List](./images/linked-list.jpeg)
|
||||
|
||||
*Made with [okso.app](https://okso.app)*
|
||||
|
||||
## Pseudo código para Operações Básicas
|
||||
|
||||
|
@ -6,7 +6,9 @@
|
||||
|
||||
Недостатком связных списков является то, что время доступа линейно (и затруднительно для реализации конвейеров). Быстрый доступ(случайный) невозможен.
|
||||
|
||||
![Связный список](https://upload.wikimedia.org/wikipedia/commons/6/6d/Singly-linked-list.svg)
|
||||
![Linked List](./images/linked-list.jpeg)
|
||||
|
||||
*Made with [okso.app](https://okso.app)*
|
||||
|
||||
## Псевдокод основных операций
|
||||
|
||||
@ -57,7 +59,7 @@ Contains(head, value)
|
||||
return true
|
||||
end Contains
|
||||
```
|
||||
|
||||
|
||||
### Удаление
|
||||
|
||||
```text
|
||||
|
@ -19,7 +19,9 @@ Bağlantılı listelerin bir dezavantajı, erişim süresinin doğrusal olmasıd
|
||||
(ve ardışık düzene geçirilmesi zordur). Rastgele erişim gibi daha hızlı erişim
|
||||
mümkün değildir. Diziler, bağlantılı listelere kıyasla daha iyi önbellek konumuna sahiptir.
|
||||
|
||||
![Bağlantılı Liste](https://upload.wikimedia.org/wikipedia/commons/6/6d/Singly-linked-list.svg)
|
||||
![Linked List](./images/linked-list.jpeg)
|
||||
|
||||
*Made with [okso.app](https://okso.app)*
|
||||
|
||||
## Temel İşlemler için Sözde Kod
|
||||
|
||||
|
@ -8,7 +8,9 @@
|
||||
|
||||
更快的访问,如随机访问,是不可行的。与链表相比,数组具有更好的缓存位置。
|
||||
|
||||
![Linked List](https://upload.wikimedia.org/wikipedia/commons/6/6d/Singly-linked-list.svg)
|
||||
![Linked List](./images/linked-list.jpeg)
|
||||
|
||||
*Made with [okso.app](https://okso.app)*
|
||||
|
||||
## 基本操作的伪代码
|
||||
|
||||
@ -59,7 +61,7 @@ Contains(head, value)
|
||||
return true
|
||||
end Contains
|
||||
```
|
||||
|
||||
|
||||
### 删除
|
||||
|
||||
```text
|
||||
@ -107,7 +109,7 @@ Traverse(head)
|
||||
end while
|
||||
end Traverse
|
||||
```
|
||||
|
||||
|
||||
### 反向遍历
|
||||
|
||||
```text
|
||||
|
BIN
src/data-structures/linked-list/images/linked-list.jpeg
Normal file
BIN
src/data-structures/linked-list/images/linked-list.jpeg
Normal file
Binary file not shown.
After Width: | Height: | Size: 63 KiB |
Binary file not shown.
Before Width: | Height: | Size: 120 KiB After Width: | Height: | Size: 120 KiB |
Binary file not shown.
Before Width: | Height: | Size: 150 KiB After Width: | Height: | Size: 150 KiB |
Loading…
Reference in New Issue
Block a user