Está en la página 1de 1

UdeA – Ude@ Parcial #2 Lógica y Representación II.

Nombre: __________________________________________________

Crear una lista doblemente ligada donde el INFO de cada nodo sea un número entero positivo (validar), además:
a) Mostrar los datos de la lista al derecho
b) Intercambie el INFO del primero con el tercero (utilizando la propiedad fundamental de las listas doblemente ligadas)
c) Recorriendo la lista al revés, averigüe cuántos números son impares

clase NodoDoble . publico vacio Intercambiar() Vlr. 1.5


privado entero numero //atributos . NodoDoble p = cab.RetornaLigaDer().RetornaLigaDer()
privado NodoDoble ligaIzq, ligaDer . entero aux = p.RetornaLigaIzq().GetNumero()

publico NodoDoble(entero pNumero) //constructor p.RetornaLigaIzq().SetNumero(p.RetornaLigaDer().GetNumero())


numero = pNumero p.RetornaLigaDer().SetNumero(aux)
ligaIzq = ligaDer = null
Fin (NodoDoble) //fin constructor

publico entero GetNumero()


Regrese numero Fin (Intercambiar)
Fin (GetNumero)
Publico entero ContarImpares() Vlr. 1.5
publico vacio SetNumero(entero pNumero) entero contador = 0
numero = pNumero
NodoDoble p = ult
Fin (SetNumero)
Mientras (p != cab)
publico vacio AsignaLigaDer(NodoDoble pLigaDer) Si (p.GetNumero() %2 == 1)
ligaDer = pLigaDer contador = contador + 1
Fin (AsignaLigaDer) Fin (Si)
publico NodoDoble RetornaLigaDer() p = p.RetornaLigaIzq()
Regrese ligaDer Fin (Mientras)
Fin (RetornaLigaDer)
Regrese contador
publico vacio AsignaLigaIzq(NodoDoble pLigaIzq)
ligaIzq = pLigaIzq
Fin (AsignaLigaIzq)

publico NodoDoble RetornaLigaIzq()


Regrese ligaIzq Fin (ContarImpares)
Fin (RetornaLigaizq) Fin (ListaDoble) //fin de la clase ListaDoble
Fin (NodoDoble) //fin de la clase NodoDoble
clase Programa
clase ListaDoble estatico vacio ProgramaPrincipal() Vlr. 2.0
privado NodoDoble cab, ult, x entero aNum
ListaDoble listaNros = nuevo ListaDoble()
publico ListaDoble() //constructor
Haga
cab = nuevo NodoDoble(0) Lea aNum
ult = x = cab Mientras (aNum <= 0)
Fin (ListaDoble) //fin constructor Mientras (aNum != 9999) //9999 es dato centinela creación
de la lista
publico vacio Ingresar(entero pNum) listaNros.Ingresar(aNum)
Haga
NodoDoble p = nuevo NodoDoble(pNum) Lea aNum
ult.AsignaLigaDer(p) Mientras (aNum <= 0)
p.AsignaLigaIzq(ult) Fin (Mientras)
ult = p
Fin (Ingresar) aNum = listaNros.MostrarDatos()
Mientras (aNum != 0)
publico entero MostrarDatos() // a)
Imprima aNum
x = x.RetornaLigaDer()
aNum = listaNros.MostrarDatos()
Si(x == null)
x = cab Fin (Mientras)
Fin (Si)
Regrese x.GetNumero() listaNros.Intercambiar() // b)
Fin (MostrarDatos) // c)
Imprima listaNros.ContarImpares()
.
.
. Continúa . . .
Fin (ProgramaPrincipal)
Fin ( Programa) //fin de la clase Programa

También podría gustarte