Skip to content

Instantly share code, notes, and snippets.

@donpandix
Last active January 20, 2017 15:37
Show Gist options
  • Save donpandix/a23e8a4802694777ada6 to your computer and use it in GitHub Desktop.
Save donpandix/a23e8a4802694777ada6 to your computer and use it in GitHub Desktop.
Implementación de estructura de datos, lista doblemente enlazada
// Actualizada a la version de Swift 3.0.2
print("Lista doblemente enlazada")
print("=========================")
// clase del nodo
class Nodo {
// valor del nodo
var valor:Int32!
// puntero al nodo siguiente
var next:Nodo!
// puntero al nodo anterior
var back:Nodo!
// constructor
init ( valor:Int32 ) {
self.valor = valor
}
}
// puntero del inicio de la lista
var nodoInicial:Nodo!
// puntero al final de la lista
var nodoFinal:Nodo!
// Ciclo para llenar la lista
for i:Int32 in 1...10 {
// Nuevo nodo a ser insertado
var nuevoNodo = Nodo(valor:i)
if ( nodoInicial == nil && nodoFinal == nil ) {
// Si es el primer nodo, apuntará al principio y final de la lista
nodoInicial = nuevoNodo
nodoFinal = nuevoNodo
} else {
// Si el nodo no es el primero, se insertará al final de la lista
nodoFinal.next = nuevoNodo
nuevoNodo.back = nodoFinal
nodoFinal = nuevoNodo
}
}
print("hacia adelante >>>")
// Recorrido hacia adelante
var nodo = nodoInicial
while nodo != nil {
print("\(nodo!.valor!) ")
nodo = nodo!.next
}
print("")
print("hacia atrás <<<")
// Recorrido hacia atrás
var nodoBack = nodoFinal
while nodoBack != nil {
print("\(nodoBack!.valor!) ")
nodoBack = nodoBack!.back
}
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment