Last active
January 20, 2017 15:37
-
-
Save donpandix/a23e8a4802694777ada6 to your computer and use it in GitHub Desktop.
Implementación de estructura de datos, lista doblemente enlazada
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
// 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