Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- using System;
- using System.Threading;
- namespace Test
- {
- class Nodo
- {
- public int noControl;
- public string nombre;
- public int noSemestre;
- public int noCarrera;
- public Nodo carreraAnterior;
- public Nodo siguienteCarrera;
- public Nodo semestreAnterior;
- public Nodo siguienteSemestre;
- public Nodo alumnoAnterior;
- public Nodo siguienteAlumno;
- public string representacion ()
- {
- return string.Format ("[{0} -> {1} -> {2}]",
- carreraAnterior == null ? "Nil" : carreraAnterior.coordenadas (),
- coordenadas (),
- siguienteCarrera == null ? "Nil" : siguienteCarrera.coordenadas ());
- }
- public string coordenadas ()
- {
- return string.Format ("({0}, {1}, {2})", noCarrera, noSemestre, noControl);
- }
- public override string ToString()
- {
- return string.Format ("No Control: {0}, Nombre: {1}, No Semestre: {2}, No Carrera: {3}", noControl, nombre, noSemestre, noCarrera);
- }
- }
- class TendederoPrueba
- {
- public TendederoPrueba ()
- {
- insertar_vacio_exito ();
- Console.Clear ();
- insertar_carrerasemestreigual_exito ();
- Console.Clear ();
- insertar_carreradiferentesemestreigual_exito ();
- Console.Clear ();
- insertar_carreraigualsemestrediferente_exito ();
- Console.Clear ();
- enlazar_carreraigualsemestrediferente_exito ();
- Console.Clear ();
- enlazar_carreradiferentesemestreigual_exito ();
- Console.Clear ();
- Console.WriteLine ("FUCKING YES!!!!");
- }
- public void insertar_vacio_exito ()
- {
- Tendedero tendedero = new Tendedero ();
- tendedero.insertar (3, 2, 1, "Juan");
- if (tendedero.buscar (1, 1, 1).ToString () !=
- "No Control: 1, Nombre: Juan, No Semestre: 2, No Carrera: 3") {
- throw new Exception ("[insertar_vacio_exito] Insersión vacío fallida.");
- }
- }
- public void insertar_carrerasemestreigual_exito ()
- {
- Tendedero tendedero = new Tendedero ();
- tendedero.insertar (3, 2, 2, "Juan");
- tendedero.insertar (3, 2, 4, "Sergio");
- tendedero.insertar (3, 2, 1, "Pedro");
- tendedero.insertar (3, 2, 3, "Ana");
- Console.WriteLine ();
- tendedero.carreras.inicio.semestres.inicio.alumnos.imprimir ();
- Console.WriteLine ();
- if (tendedero.buscar (1, 1, 1).ToString () !=
- "No Control: 1, Nombre: Pedro, No Semestre: 2, No Carrera: 3" ||
- tendedero.buscar (1, 1, 2).ToString () !=
- "No Control: 2, Nombre: Juan, No Semestre: 2, No Carrera: 3" ||
- tendedero.buscar (1, 1, 3).ToString () !=
- "No Control: 3, Nombre: Ana, No Semestre: 2, No Carrera: 3" ||
- tendedero.buscar (1, 1, 4).ToString () !=
- "No Control: 4, Nombre: Sergio, No Semestre: 2, No Carrera: 3") {
- throw new Exception ("[insertar_carrerasemestreigual_exito] Insersión con" +
- " carrera y semestre iguales fallida.");
- }
- }
- public void insertar_carreraigualsemestrediferente_exito ()
- {
- Tendedero tendedero = new Tendedero ();
- tendedero.insertar (2, 3, 2, "Juan");
- tendedero.insertar (2, 3, 4, "Sergio");
- tendedero.insertar (2, 3, 1, "Pedro");
- tendedero.insertar (2, 3, 3, "Ana");
- tendedero.insertar (2, 1, 6, "Manuel");
- tendedero.insertar (2, 1, 8, "Manuela");
- tendedero.insertar (2, 1, 5, "Manolo");
- tendedero.insertar (2, 1, 7, "Mani");
- tendedero.insertar (2, 2, 10, "Pepe");
- tendedero.insertar (2, 2, 12, "Jose");
- tendedero.insertar (2, 2, 9, "Gilberto");
- tendedero.insertar (2, 2, 11, "Oscar");
- Console.WriteLine ();
- tendedero.carreras.inicio.semestres.inicio.alumnos.imprimir ();
- Console.WriteLine ();
- tendedero.carreras.inicio.semestres.inicio.siguiente.alumnos.imprimir ();
- Console.WriteLine ();
- tendedero.carreras.inicio.semestres.inicio.siguiente.siguiente.alumnos.imprimir ();
- Console.WriteLine ();
- if (tendedero.buscar (1, 1, 1).ToString () !=
- "No Control: 5, Nombre: Manolo, No Semestre: 1, No Carrera: 2" ||
- tendedero.buscar (1, 1, 2).ToString () !=
- "No Control: 6, Nombre: Manuel, No Semestre: 1, No Carrera: 2" ||
- tendedero.buscar (1, 1, 3).ToString () !=
- "No Control: 7, Nombre: Mani, No Semestre: 1, No Carrera: 2" ||
- tendedero.buscar (1, 1, 4).ToString () !=
- "No Control: 8, Nombre: Manuela, No Semestre: 1, No Carrera: 2" ||
- tendedero.buscar (1, 2, 1).ToString () !=
- "No Control: 9, Nombre: Gilberto, No Semestre: 2, No Carrera: 2" ||
- tendedero.buscar (1, 2, 2).ToString () !=
- "No Control: 10, Nombre: Pepe, No Semestre: 2, No Carrera: 2" ||
- tendedero.buscar (1, 2, 3).ToString () !=
- "No Control: 11, Nombre: Oscar, No Semestre: 2, No Carrera: 2" ||
- tendedero.buscar (1, 2, 4).ToString () !=
- "No Control: 12, Nombre: Jose, No Semestre: 2, No Carrera: 2" ||
- tendedero.buscar (1, 3, 1).ToString () !=
- "No Control: 1, Nombre: Pedro, No Semestre: 3, No Carrera: 2" ||
- tendedero.buscar (1, 3, 2).ToString () !=
- "No Control: 2, Nombre: Juan, No Semestre: 3, No Carrera: 2" ||
- tendedero.buscar (1, 3, 3).ToString () !=
- "No Control: 3, Nombre: Ana, No Semestre: 3, No Carrera: 2" ||
- tendedero.buscar (1, 3, 4).ToString () !=
- "No Control: 4, Nombre: Sergio, No Semestre: 3, No Carrera: 2") {
- throw new Exception ("[insertar_carreraigualsemestrediferente_exito] Insersión con" +
- " carrera igual y semestre diferente fallida.");
- }
- }
- public void insertar_carreradiferentesemestreigual_exito ()
- {
- Tendedero tendedero = new Tendedero ();
- tendedero.insertar (3, 2, 2, "Juan");
- tendedero.insertar (3, 2, 4, "Sergio");
- tendedero.insertar (3, 2, 1, "Pedro");
- tendedero.insertar (3, 2, 3, "Ana");
- tendedero.insertar (1, 2, 6, "Manuel");
- tendedero.insertar (1, 2, 8, "Manuela");
- tendedero.insertar (1, 2, 5, "Manolo");
- tendedero.insertar (1, 2, 7, "Mani");
- tendedero.insertar (2, 2, 10, "Pepe");
- tendedero.insertar (2, 2, 12, "Jose");
- tendedero.insertar (2, 2, 9, "Gilberto");
- tendedero.insertar (2, 2, 11, "Oscar");
- Console.WriteLine ();
- tendedero.carreras.inicio.semestres.inicio.alumnos.imprimir ();
- Console.WriteLine ();
- tendedero.carreras.inicio.siguiente.semestres.inicio.alumnos.imprimir ();
- Console.WriteLine ();
- tendedero.carreras.inicio.siguiente.siguiente.semestres.inicio.alumnos.imprimir ();
- Console.WriteLine ();
- if (tendedero.buscar (1, 1, 1).ToString () !=
- "No Control: 5, Nombre: Manolo, No Semestre: 2, No Carrera: 1" ||
- tendedero.buscar (1, 1, 2).ToString () !=
- "No Control: 6, Nombre: Manuel, No Semestre: 2, No Carrera: 1" ||
- tendedero.buscar (1, 1, 3).ToString () !=
- "No Control: 7, Nombre: Mani, No Semestre: 2, No Carrera: 1" ||
- tendedero.buscar (1, 1, 4).ToString () !=
- "No Control: 8, Nombre: Manuela, No Semestre: 2, No Carrera: 1" ||
- tendedero.buscar (2, 1, 1).ToString () !=
- "No Control: 9, Nombre: Gilberto, No Semestre: 2, No Carrera: 2" ||
- tendedero.buscar (2, 1, 2).ToString () !=
- "No Control: 10, Nombre: Pepe, No Semestre: 2, No Carrera: 2" ||
- tendedero.buscar (2, 1, 3).ToString () !=
- "No Control: 11, Nombre: Oscar, No Semestre: 2, No Carrera: 2" ||
- tendedero.buscar (2, 1, 4).ToString () !=
- "No Control: 12, Nombre: Jose, No Semestre: 2, No Carrera: 2" ||
- tendedero.buscar (3, 1, 1).ToString () !=
- "No Control: 1, Nombre: Pedro, No Semestre: 2, No Carrera: 3" ||
- tendedero.buscar (3, 1, 2).ToString () !=
- "No Control: 2, Nombre: Juan, No Semestre: 2, No Carrera: 3" ||
- tendedero.buscar (3, 1, 3).ToString () !=
- "No Control: 3, Nombre: Ana, No Semestre: 2, No Carrera: 3" ||
- tendedero.buscar (3, 1, 4).ToString () !=
- "No Control: 4, Nombre: Sergio, No Semestre: 2, No Carrera: 3") {
- throw new Exception ("[insertar_carreradiferentesemestreigual_exito] Insersión con" +
- " carrera diferente y semestre igual fallida.");
- }
- }
- public void enlazar_carreraigualsemestrediferente_exito ()
- {
- Tendedero tendedero = new Tendedero ();
- tendedero.insertar (2, 3, 2, "Juan");
- tendedero.insertar (2, 3, 4, "Sergio");
- tendedero.insertar (2, 3, 1, "Pedro");
- tendedero.insertar (2, 3, 3, "Ana");
- tendedero.insertar (2, 1, 6, "Manuel");
- tendedero.insertar (2, 1, 8, "Manuela");
- tendedero.insertar (2, 1, 5, "Manolo");
- tendedero.insertar (2, 1, 7, "Mani");
- tendedero.insertar (2, 2, 10, "Pepe");
- tendedero.insertar (2, 2, 12, "Jose");
- tendedero.insertar (2, 2, 9, "Gilberto");
- tendedero.insertar (2, 2, 11, "Oscar");
- Console.WriteLine ();
- Console.WriteLine ("------");
- Console.WriteLine (tendedero.buscar (1, 1, 2));
- Console.WriteLine (tendedero.buscar (1, 2, 2).semestreAnterior);
- Console.WriteLine (tendedero.buscar (1, 2, 2));
- Console.WriteLine (tendedero.buscar (1, 3, 2).semestreAnterior);
- Console.WriteLine ("------");
- Console.WriteLine (tendedero.buscar (1, 1, 2));
- Console.WriteLine (tendedero.buscar (1, 2, 2).semestreAnterior);
- Console.WriteLine (tendedero.buscar (1, 2, 2).siguienteSemestre);
- Console.WriteLine (tendedero.buscar (1, 3, 2));
- Console.WriteLine ("------");
- Console.WriteLine (tendedero.buscar (1, 1, 2).siguienteSemestre);
- Console.WriteLine (tendedero.buscar (1, 2, 2));
- Console.WriteLine (tendedero.buscar (1, 2, 2).siguienteSemestre);
- Console.WriteLine (tendedero.buscar (1, 3, 2));
- Console.WriteLine ("------");
- Console.WriteLine ();
- if (tendedero.buscar (1, 1, 1).siguienteSemestre != tendedero.buscar (1, 2, 1) ||
- tendedero.buscar (1, 1, 2).siguienteSemestre != tendedero.buscar (1, 2, 2) ||
- tendedero.buscar (1, 1, 3).siguienteSemestre != tendedero.buscar (1, 2, 3) ||
- tendedero.buscar (1, 2, 1).siguienteSemestre != tendedero.buscar (1, 3, 1) ||
- tendedero.buscar (1, 2, 2).siguienteSemestre != tendedero.buscar (1, 3, 2) ||
- tendedero.buscar (1, 2, 3).siguienteSemestre != tendedero.buscar (1, 3, 3) ||
- tendedero.buscar (1, 3, 1).semestreAnterior != tendedero.buscar (1, 2, 1) ||
- tendedero.buscar (1, 3, 2).semestreAnterior != tendedero.buscar (1, 2, 2) ||
- tendedero.buscar (1, 3, 3).semestreAnterior != tendedero.buscar (1, 2, 3) ||
- tendedero.buscar (1, 2, 1).semestreAnterior != tendedero.buscar (1, 1, 1) ||
- tendedero.buscar (1, 2, 2).semestreAnterior != tendedero.buscar (1, 1, 2) ||
- tendedero.buscar (1, 2, 3).semestreAnterior != tendedero.buscar (1, 1, 3)) {
- throw new Exception ("[enlazar_carreraigualsemestrediferente_exito] Enlazar con" +
- " carrera igual y semestre diferente fallido.");
- }
- }
- public void enlazar_carreradiferentesemestreigual_exito ()
- {
- Tendedero tendedero = new Tendedero ();
- tendedero.insertar (3, 2, 2, "Juan");
- tendedero.insertar (3, 2, 4, "Sergio");
- tendedero.insertar (3, 2, 1, "Pedro");
- tendedero.insertar (3, 2, 3, "Ana");
- tendedero.insertar (1, 2, 6, "Manuel");
- tendedero.insertar (1, 2, 8, "Manuela");
- tendedero.insertar (1, 2, 5, "Manolo");
- tendedero.insertar (1, 2, 7, "Mani");
- tendedero.insertar (2, 2, 10, "Pepe");
- tendedero.insertar (2, 2, 12, "Jose");
- tendedero.insertar (2, 2, 9, "Gilberto");
- tendedero.insertar (2, 2, 11, "Oscar");
- Console.WriteLine ();
- Console.WriteLine ("------");
- Console.WriteLine (tendedero.buscar (1, 1, 2));
- Console.WriteLine (tendedero.buscar (2, 1, 2).carreraAnterior);
- Console.WriteLine (tendedero.buscar (2, 1, 2));
- Console.WriteLine (tendedero.buscar (3, 1, 2).carreraAnterior);
- Console.WriteLine ("------");
- Console.WriteLine (tendedero.buscar (1, 1, 2));
- Console.WriteLine (tendedero.buscar (2, 1, 2).carreraAnterior);
- Console.WriteLine (tendedero.buscar (2, 1, 2).siguienteCarrera);
- Console.WriteLine (tendedero.buscar (3, 1, 2));
- Console.WriteLine ("------");
- Console.WriteLine (tendedero.buscar (1, 1, 2).siguienteCarrera);
- Console.WriteLine (tendedero.buscar (2, 1, 2));
- Console.WriteLine (tendedero.buscar (2, 1, 2).siguienteCarrera);
- Console.WriteLine (tendedero.buscar (3, 1, 2));
- Console.WriteLine ("------");
- Console.WriteLine ();
- if (tendedero.buscar (1, 1, 1).siguienteCarrera != tendedero.buscar (2, 1, 1) ||
- tendedero.buscar (1, 1, 2).siguienteCarrera != tendedero.buscar (2, 1, 2) ||
- tendedero.buscar (1, 1, 3).siguienteCarrera != tendedero.buscar (2, 1, 3) ||
- tendedero.buscar (2, 1, 1).siguienteCarrera != tendedero.buscar (3, 1, 1) ||
- tendedero.buscar (2, 1, 2).siguienteCarrera != tendedero.buscar (3, 1, 2) ||
- tendedero.buscar (2, 1, 3).siguienteCarrera != tendedero.buscar (3, 1, 3) ||
- tendedero.buscar (3, 1, 1).carreraAnterior != tendedero.buscar (2, 1, 1) ||
- tendedero.buscar (3, 1, 2).carreraAnterior != tendedero.buscar (2, 1, 2) ||
- tendedero.buscar (3, 1, 3).carreraAnterior != tendedero.buscar (2, 1, 3) ||
- tendedero.buscar (2, 1, 1).carreraAnterior != tendedero.buscar (1, 1, 1) ||
- tendedero.buscar (2, 1, 2).carreraAnterior != tendedero.buscar (1, 1, 2) ||
- tendedero.buscar (2, 1, 3).carreraAnterior != tendedero.buscar (1, 1, 3)) {
- throw new Exception ("[enlazar_carreradiferentesemestreigual_exito] Enlazar con" +
- " carrera diferente y semestre igual fallido.");
- }
- }
- }
- class Tendedero
- {
- public ListaCarreras carreras;
- public void insertar (int noCarrera, int noSemestre, int noControl, string nombre)
- {
- Nodo nodo = new Nodo ();
- nodo.noControl = noControl;
- nodo.nombre = nombre;
- nodo.noSemestre = noSemestre;
- nodo.noCarrera = noCarrera;
- nodo.alumnoAnterior = null;
- nodo.siguienteAlumno = null;
- nodo.semestreAnterior = null;
- nodo.siguienteSemestre = null;
- nodo.carreraAnterior = null;
- nodo.siguienteCarrera = null;
- if (carreras == null) {
- Console.WriteLine ("Insertando inicio");
- carreras = new ListaCarreras ();
- carreras.inicio = null;
- carreras.final = null;
- }
- bool carreraExiste, semestreExiste;
- Carrera carrera;
- Semestre semestre;
- carreraExiste = false;
- semestreExiste = false;
- carrera = carreras.inicio;
- semestre = null;
- while (carrera != null && !carreraExiste) {
- semestre = carrera.semestres.inicio;
- if (semestre != null && semestre.alumnos.inicio.noCarrera == nodo.noCarrera) {
- carreraExiste = true;
- while (semestre != null && !semestreExiste) {
- if (nodo.noSemestre == semestre.alumnos.inicio.noSemestre) {
- semestreExiste = true;
- } else {
- semestre = semestre.siguiente;
- }
- }
- } else {
- carrera = carrera.siguiente;
- }
- }
- if (carrera == null) {
- Console.WriteLine ("Insertando nueva carrera");
- carrera = new Carrera ();
- carrera.semestres = new ListaSemestres ();
- carrera.semestres.inicio = new Semestre ();
- carrera.semestres.final = carrera.semestres.inicio;
- carrera.semestres.inicio.alumnos = new ListaAlumnos ();
- carrera.semestres.inicio.alumnos.inicio = null;
- carrera.semestres.inicio.alumnos.final = null;
- semestre = carrera.semestres.inicio;
- if (carreras.inicio == null || carreras.final == null) {
- carreras.inicio = carrera;
- carreras.final = carrera;
- carrera.anterior = null;
- carrera.siguiente = null;
- } else if (carreras.inicio.semestres.inicio.alumnos.inicio.noCarrera > nodo.noCarrera) {
- carrera.anterior = carreras.inicio.anterior;
- carrera.siguiente = carreras.inicio;
- carreras.inicio.anterior = carrera;
- carreras.inicio = carrera;
- } else if (carreras.final.semestres.inicio.alumnos.inicio.noCarrera < nodo.noCarrera) {
- carrera.anterior = carreras.final;
- carrera.siguiente = carreras.final.siguiente;
- carreras.final.anterior = carrera;
- carreras.final = carrera;
- } else {
- Carrera anterior, siguiente;
- anterior = carreras.inicio;
- siguiente = anterior.siguiente;
- while (siguiente != null &&
- siguiente.semestres.inicio.alumnos.inicio.noCarrera < nodo.noCarrera) {
- anterior = siguiente;
- siguiente = siguiente.siguiente;
- }
- carrera.anterior = anterior;
- carrera.siguiente = siguiente;
- siguiente.anterior = carrera;
- anterior.siguiente = carrera;
- }
- }
- if (semestre == null) {
- Console.WriteLine ("Insertando nuevo semestre");
- semestre = new Semestre ();
- semestre.alumnos = new ListaAlumnos ();
- semestre.alumnos.inicio = null;
- semestre.alumnos.final = null;
- if (carrera.semestres.inicio == null || carrera.semestres.final == null) {
- carrera.semestres.inicio = semestre;
- carrera.semestres.final = semestre;
- semestre.anterior = null;
- semestre.siguiente = null;
- } else if (carrera.semestres.inicio.alumnos.inicio.noSemestre > nodo.noSemestre) {
- semestre.anterior = carrera.semestres.inicio.anterior;
- semestre.siguiente = carrera.semestres.inicio;
- carrera.semestres.inicio.anterior = semestre;
- carrera.semestres.inicio = semestre;
- } else if (carrera.semestres.final.alumnos.inicio.noSemestre < nodo.noSemestre) {
- semestre.anterior = carrera.semestres.final;
- semestre.siguiente = carrera.semestres.final.siguiente;
- carrera.semestres.final.anterior = semestre;
- carrera.semestres.final = semestre;
- } else {
- Semestre anterior, siguiente;
- anterior = carrera.semestres.inicio;
- siguiente = anterior.siguiente;
- while (siguiente != null &&
- siguiente.alumnos.inicio.noSemestre < nodo.noSemestre) {
- anterior = siguiente;
- siguiente = siguiente.siguiente;
- }
- semestre.anterior = anterior;
- semestre.siguiente = siguiente;
- siguiente.anterior = semestre;
- anterior.siguiente = semestre;
- }
- }
- Console.WriteLine ("Insertando nuevo alumno");
- if (semestre.alumnos.inicio == null || semestre.alumnos.final == null) {
- semestre.alumnos.inicio = nodo;
- semestre.alumnos.final = nodo;
- //enlazarSemestre (semestre);
- /*if (semestre.anterior != null) {
- nodo.semestreAnterior = semestre.anterior.alumnos.inicio;
- semestre.anterior.alumnos.inicio.siguienteSemestre = nodo;
- }
- if (semestre.siguiente != null) {
- nodo.siguienteSemestre = semestre.siguiente.alumnos.inicio;
- semestre.siguiente.alumnos.inicio.semestreAnterior = nodo;
- }*/
- } else if (semestre.alumnos.inicio.noControl > nodo.noControl) {
- nodo.alumnoAnterior = semestre.alumnos.inicio.alumnoAnterior;
- nodo.siguienteAlumno = semestre.alumnos.inicio;
- semestre.alumnos.inicio.alumnoAnterior = nodo;
- semestre.alumnos.inicio = nodo;
- /*if (semestre.anterior != null) {
- nodo.semestreAnterior = semestre.anterior.alumnos.inicio;
- semestre.anterior.alumnos.inicio.siguienteSemestre = nodo;
- }
- if (semestre.siguiente != null) {
- nodo.siguienteSemestre = semestre.siguiente.alumnos.inicio;
- semestre.siguiente.alumnos.inicio.semestreAnterior = nodo;
- }*/
- } else if (semestre.alumnos.final.noControl < nodo.noControl) {
- nodo.alumnoAnterior = semestre.alumnos.final;
- nodo.siguienteAlumno = semestre.alumnos.final.siguienteAlumno;
- semestre.alumnos.final.siguienteAlumno = nodo;
- semestre.alumnos.final = nodo;
- // TODO recorrer sin saber dimensiones
- } else {
- Nodo anterior, siguiente;
- anterior = semestre.alumnos.inicio;
- siguiente = anterior.siguienteAlumno;
- while (siguiente != null && siguiente.noControl < nodo.noControl) {
- anterior = siguiente;
- siguiente = siguiente.siguienteAlumno;
- }
- nodo.alumnoAnterior = anterior;
- nodo.siguienteAlumno = siguiente;
- siguiente.alumnoAnterior = nodo;
- anterior.siguienteAlumno = nodo;
- }
- enlazarSemestre (semestre, nodo);
- enlazarCarrera (carrera, semestre, nodo);
- }
- public void enlazarSemestre (Semestre semestre, Nodo alumno)
- {
- Nodo anterior, nodo, siguiente;
- anterior = null;
- nodo = null;
- siguiente = null;
- bool enlazar;
- if (semestre.anterior != null) {
- anterior = semestre.anterior.alumnos.inicio;
- }
- nodo = semestre.alumnos.inicio;
- if (semestre.siguiente != null) {
- siguiente = semestre.siguiente.alumnos.inicio;
- }
- enlazar = false;
- while (anterior != null || nodo != null || siguiente != null) {
- if (alumno == nodo) {
- enlazar = true;
- }
- if (enlazar) {
- if (anterior != null) {
- anterior.siguienteSemestre = nodo;
- }
- if (nodo != null) {
- nodo.semestreAnterior = anterior;
- nodo.siguienteSemestre = siguiente;
- }
- if (siguiente != null) {
- siguiente.semestreAnterior = nodo;
- }
- }
- if (anterior != null) {
- anterior = anterior.siguienteAlumno;
- }
- if (nodo != null) {
- nodo = nodo.siguienteAlumno;
- }
- if (siguiente != null) {
- siguiente = siguiente.siguienteAlumno;
- }
- }
- }
- public void enlazarCarrera (Carrera carrera, Semestre semestre, Nodo alumno)
- {
- Semestre semestreAnterior, semestreNodo, siguienteSemestre;
- semestreAnterior = null;
- semestreNodo = null;
- siguienteSemestre = null;
- Nodo anterior, nodo, siguiente;
- anterior = null;
- nodo = null;
- siguiente = null;
- bool enlazar;
- if (carrera.anterior != null) {
- semestreAnterior = carrera.anterior.semestres.inicio;
- }
- semestreNodo = carrera.semestres.inicio;
- if (carrera.siguiente != null) {
- siguienteSemestre = carrera.siguiente.semestres.inicio;
- }
- enlazar = false;
- while (semestreAnterior != null || semestreNodo != null || siguienteSemestre != null) {
- if (semestre == semestreNodo) {
- enlazar = true;
- }
- if (enlazar) {
- if (semestreAnterior != null) {
- anterior = semestreAnterior.alumnos.inicio;
- }
- if (semestreNodo != null) {
- nodo = semestreNodo.alumnos.inicio;
- }
- if (siguienteSemestre != null) {
- siguiente = siguienteSemestre.alumnos.inicio;
- }
- while (anterior != null || nodo != null || siguiente != null) {
- if (anterior != null) {
- anterior.siguienteCarrera = nodo;
- }
- if (nodo != null) {
- nodo.carreraAnterior = anterior;
- nodo.siguienteCarrera = siguiente;
- }
- if (siguiente != null) {
- siguiente.carreraAnterior = nodo;
- }
- if (anterior != null) {
- anterior = anterior.siguienteAlumno;
- }
- if (nodo != null) {
- nodo = nodo.siguienteAlumno;
- }
- if (siguiente != null) {
- siguiente = siguiente.siguienteAlumno;
- }
- }
- }
- if (semestreAnterior != null) {
- semestreAnterior = semestreAnterior.siguiente;
- }
- if (semestreNodo != null) {
- semestreNodo = semestreNodo.siguiente;
- }
- if (siguienteSemestre != null) {
- siguienteSemestre = siguienteSemestre.siguiente;
- }
- }
- }
- public Nodo buscar (int noCarrera, int noSemestre, int noControl)
- {
- Carrera carrera;
- Semestre semestre;
- Nodo nodo;
- carrera = null;
- semestre = null;
- nodo = null;
- carrera = carreras.inicio;
- for (int i = 1; i < noCarrera && carrera != null; i++) {
- carrera = carrera.siguiente;
- }
- if (carrera != null) {
- semestre = carrera.semestres.inicio;
- for (int i = 1; i < noSemestre && semestre != null; i++) {
- semestre = semestre.siguiente;
- }
- }
- if (semestre != null) {
- nodo = semestre.alumnos.inicio;
- for (int i = 1; i < noControl && nodo != null; i++) {
- nodo = nodo.siguienteAlumno;
- }
- }
- /*while (carrera != null && nodo == null) {
- semestre = carrera.semestres.inicio;
- while (semestre != null && nodo == null) {
- nodo = semestre.alumnos.inicio;
- if (nodo != null) {
- if (nodo.noCarrera == noCarrera) {
- if (nodo.noSemestre == noSemestre) {
- while (nodo != null && nodo.noControl != noControl) {
- nodo = nodo.siguienteAlumno;
- }
- } else {
- nodo = null;
- semestre = semestre.siguiente;
- }
- } else {
- nodo = null;
- semestre = null;
- }
- } else {
- semestre = semestre.siguiente;
- }
- }
- carrera = carrera.siguiente;
- }*/
- return nodo;
- }
- }
- class ListaCarreras
- {
- public Carrera inicio, final;
- }
- class Carrera
- {
- public ListaSemestres semestres;
- public Carrera anterior, siguiente;
- }
- class ListaSemestres
- {
- public Semestre inicio, final;
- }
- class Semestre
- {
- public ListaAlumnos alumnos;
- public Semestre anterior, siguiente;
- }
- class ListaAlumnos
- {
- public Nodo inicio, final;
- public void imprimir ()
- {
- Nodo t = inicio;
- while (t != null) {
- Console.WriteLine (t);
- t = t.siguienteAlumno;
- }
- }
- }
- class MainClass
- {
- static void Main(string[] args)
- {
- try {
- new TendederoPrueba ();
- } catch (Exception e) {
- Console.WriteLine (e);
- }
- }
- }
- }
- /*
- *
- if (carreras.inicio == carreras.final) {
- nodo.carreraAnterior = null;
- nodo.siguienteCarrera = null;
- } else if (carrera == carreras.inicio) {
- nodo.carreraAnterior = null;
- nodo.siguienteCarrera = carrera.siguiente.semestres.inicio.alumnos.inicio;
- } else if (carrera == carreras.final) {
- nodo.carreraAnterior = carrera.anterior.semestres.inicio.alumnos.inicio;
- nodo.siguienteCarrera = null;
- } else {
- Carrera carreraAnterior, carreraSiguiente;
- carreraAnterior = carreras.inicio;
- carreraSiguiente = carreraAnterior.siguiente;
- while (carreraSiguiente != null && carreraSiguiente != carrera) {
- carreraAnterior = carreraSiguiente;
- carreraSiguiente = carreraSiguiente.siguiente;
- }
- nodo.carreraAnterior = carreraAnterior;
- nodo.siguienteCarrera = carreraSiguiente;
- }
- */
- /*Nodo carreraAnterior, nodo, siguienteCarrera;
- carreraAnterior = null;
- nodo = null;
- siguienteCarrera = null;
- if (carrera.anterior != null) {
- carreraAnterior = carrera.anterior.alumnos.inicio;
- }
- nodo = semestre.alumnos.inicio;
- if (carrera.siguiente != null) {
- siguienteSemestre = semestre.siguiente.alumnos.inicio;
- }
- while (nodo != null) {
- if (semestreAnterior != null) {
- nodo.semestreAnterior = semestreAnterior;
- semestreAnterior.siguienteSemestre = nodo;
- semestreAnterior = semestreAnterior.siguienteAlumno;
- }
- if (siguienteSemestre != null) {
- nodo.siguienteSemestre = siguienteSemestre;
- siguienteSemestre.semestreAnterior = nodo;
- siguienteSemestre = siguienteSemestre.siguienteAlumno;
- }
- nodo = nodo.siguienteAlumno;
- }*/
- /*
- *
- if (nodo == alumno) {
- enlazar = true;
- }
- if (semestreAnterior != null) {
- if (nodo != null) {
- nodo.semestreAnterior = semestreAnterior;
- }
- //if (enlazar) {
- semestreAnterior.siguienteSemestre = nodo;
- semestreAnterior = semestreAnterior.siguienteAlumno;
- //}
- }
- if (siguienteSemestre != null) {
- if (nodo != null) {
- nodo.siguienteSemestre = siguienteSemestre;
- }
- //if (enlazar) {
- siguienteSemestre.semestreAnterior = nodo;
- siguienteSemestre = siguienteSemestre.siguienteAlumno;
- //}
- }
- if (nodo != null) {
- nodo = nodo.siguienteAlumno;
- }*/
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement