mirror of
https://github.moeyy.xyz/https://github.com/trekhleb/javascript-algorithms.git
synced 2024-12-27 15:41:16 +08:00
Merge branch 'merge' of https://github.com/trekhleb/javascript-algorithms into merge
This commit is contained in:
commit
88cef5f548
164
src/data-structures/linked-list/README.es-ES.md
Normal file
164
src/data-structures/linked-list/README.es-ES.md
Normal file
@ -0,0 +1,164 @@
|
|||||||
|
# Lista Enlazada (Linked List)
|
||||||
|
|
||||||
|
_Lee esto en otros idiomas:_
|
||||||
|
[_简体中文_](README.zh-CN.md),
|
||||||
|
[_Русский_](README.ru-RU.md),
|
||||||
|
[_日本語_](README.ja-JP.md),
|
||||||
|
[_Português_](README.pt-BR.md)
|
||||||
|
[_English_](README.md)
|
||||||
|
|
||||||
|
En ciencias de la computaciòn una **lista enlazada** es una coleccion linear
|
||||||
|
de elemntos de datos, en los cuales el orden linear no es dado por
|
||||||
|
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. Bajo la forma mas simple, cada nodo es
|
||||||
|
compuesto de datos y una referencia (en otras palabras,
|
||||||
|
un lazo) al siguiente nodo en la secuencia. Esta estructura
|
||||||
|
permite la insercion o remocion de elementos
|
||||||
|
desde cualquier posicion en la secuencia durante la iteracion.
|
||||||
|
Variantes mas complejas agregan lazos adicionales, permitiendo
|
||||||
|
una eficiente insercion o remocion desde referencias arbitrarias
|
||||||
|
del elemento. Una desventaja de las listas lazadas es que el tiempo de
|
||||||
|
acceso es linear (y dificil de canalizar) Un acceso
|
||||||
|
mas rapido, como un acceso aleatorio, no es factible. Los arreglos
|
||||||
|
tienen una mejor locazion comparados con las listas lazadas.
|
||||||
|
|
||||||
|
|
||||||
|
![Linked List](https://upload.wikimedia.org/wikipedia/commons/6/6d/Singly-linked-list.svg)
|
||||||
|
|
||||||
|
## Pseudocodigo para operacones basicas
|
||||||
|
|
||||||
|
### Insertar
|
||||||
|
|
||||||
|
```text
|
||||||
|
Add(value)
|
||||||
|
Pre: value is the value to add to the list
|
||||||
|
Post: value has been placed at the tail of the list
|
||||||
|
n ← node(value)
|
||||||
|
if head = ø
|
||||||
|
head ← n
|
||||||
|
tail ← n
|
||||||
|
else
|
||||||
|
tail.next ← n
|
||||||
|
tail ← n
|
||||||
|
end if
|
||||||
|
end Add
|
||||||
|
```
|
||||||
|
|
||||||
|
```text
|
||||||
|
Prepend(value)
|
||||||
|
Pre: value is the value to add to the list
|
||||||
|
Post: value has been placed at the head of the list
|
||||||
|
n ← node(value)
|
||||||
|
n.next ← head
|
||||||
|
head ← n
|
||||||
|
if tail = ø
|
||||||
|
tail ← n
|
||||||
|
end
|
||||||
|
end Prepend
|
||||||
|
```
|
||||||
|
|
||||||
|
### Buscar
|
||||||
|
|
||||||
|
```text
|
||||||
|
Contains(head, value)
|
||||||
|
Pre: head is the head node in the list
|
||||||
|
value is the value to search for
|
||||||
|
Post: the item is either in the linked list, true; otherwise false
|
||||||
|
n ← head
|
||||||
|
while n != ø and n.value != value
|
||||||
|
n ← n.next
|
||||||
|
end while
|
||||||
|
if n = ø
|
||||||
|
return false
|
||||||
|
end if
|
||||||
|
return true
|
||||||
|
end Contains
|
||||||
|
```
|
||||||
|
|
||||||
|
### Borrar
|
||||||
|
|
||||||
|
```text
|
||||||
|
Remove(head, value)
|
||||||
|
Pre: head is the head node in the list
|
||||||
|
value is the value to remove from the list
|
||||||
|
Post: value is removed from the list, true, otherwise false
|
||||||
|
if head = ø
|
||||||
|
return false
|
||||||
|
end if
|
||||||
|
n ← head
|
||||||
|
if n.value = value
|
||||||
|
if head = tail
|
||||||
|
head ← ø
|
||||||
|
tail ← ø
|
||||||
|
else
|
||||||
|
head ← head.next
|
||||||
|
end if
|
||||||
|
return true
|
||||||
|
end if
|
||||||
|
while n.next != ø and n.next.value != value
|
||||||
|
n ← n.next
|
||||||
|
end while
|
||||||
|
if n.next != ø
|
||||||
|
if n.next = tail
|
||||||
|
tail ← n
|
||||||
|
end if
|
||||||
|
n.next ← n.next.next
|
||||||
|
return true
|
||||||
|
end if
|
||||||
|
return false
|
||||||
|
end Remove
|
||||||
|
```
|
||||||
|
|
||||||
|
### Atrevesar
|
||||||
|
|
||||||
|
```text
|
||||||
|
Traverse(head)
|
||||||
|
Pre: head is the head node in the list
|
||||||
|
Post: the items in the list have been traversed
|
||||||
|
n ← head
|
||||||
|
while n != ø
|
||||||
|
yield n.value
|
||||||
|
n ← n.next
|
||||||
|
end while
|
||||||
|
end Traverse
|
||||||
|
```
|
||||||
|
|
||||||
|
### Atravesar en Reversa
|
||||||
|
|
||||||
|
```text
|
||||||
|
ReverseTraversal(head, tail)
|
||||||
|
Pre: head and tail belong to the same list
|
||||||
|
Post: the items in the list have been traversed in reverse order
|
||||||
|
if tail != ø
|
||||||
|
curr ← tail
|
||||||
|
while curr != head
|
||||||
|
prev ← head
|
||||||
|
while prev.next != curr
|
||||||
|
prev ← prev.next
|
||||||
|
end while
|
||||||
|
yield curr.value
|
||||||
|
curr ← prev
|
||||||
|
end while
|
||||||
|
yield curr.value
|
||||||
|
end if
|
||||||
|
end ReverseTraversal
|
||||||
|
```
|
||||||
|
|
||||||
|
## Complexities
|
||||||
|
|
||||||
|
### Time Complexity
|
||||||
|
|
||||||
|
| Access | Search | Insertion | Deletion |
|
||||||
|
| :-------: | :-------: | :-------: | :-------: |
|
||||||
|
| O(n) | O(n) | O(1) | O(n) |
|
||||||
|
|
||||||
|
### Space Complexity
|
||||||
|
|
||||||
|
O(n)
|
||||||
|
|
||||||
|
## References
|
||||||
|
|
||||||
|
- [Wikipedia](https://en.wikipedia.org/wiki/Linked_list)
|
||||||
|
- [YouTube](https://www.youtube.com/watch?v=njTh_OwMljA&index=2&t=1s&list=PLLXdhg_r2hKA7DPDsunoDZ-Z769jWn4R8)
|
Loading…
Reference in New Issue
Block a user