Linked List Spanish Traslation (#409)

* Linked List Spanish Traslation

* Rename the CI workflow file.

Co-authored-by: Oleksii Trekhleb <trehleb@gmail.com>
This commit is contained in:
Javier Saviñon 2020-12-20 13:16:35 -06:00 committed by GitHub
parent e076203590
commit 148f9179c9
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23

View 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)