Está en la página 1de 26

using System; using System.Collections.Generic; using System.

Text; namespace ListaDoblementeEnlazada { class Medico { private string nombre; private int pos; public string Nombre { set { nombre = value; } get { return nombre; } } public int Posicion { set { pos = value; } get { return pos; } } public Medico() { Nombre = ""; Posicion = 0; } public Medico(string X, int Y) { Nombre = X; Posicion = Y; } public string DevNombre() { return Nombre; } public int DevPosicion() { return Posicion; } public int ComparaPosicion(Medico X) { if (X.Posicion == Posicion) { return 1; } else { return 0; } } } }

using System; using System.Collections.Generic; using System.Text; namespace ListaDoblementeEnlazada { class Nodo { private Medico elemento; private Nodo adelante; private Nodo atras; public Medico Elemento { set { elemento = value; } get { return elemento; } } public Nodo Adelante { set { adelante = value; } get { return adelante; } } public Nodo Atras { set { atras = value; } get { return atras; } } public Nodo() { Elemento = null; Adelante = null; Atras = null; } public Nodo(Medico X) { Elemento = X; Adelante = null; Atras = null; } public Nodo(Medico X, Nodo Sgte, Nodo Ante) { Elemento = X; Adelante = Sgte; Atras = Ante; } public Medico DevElemento() {

return Elemento; } public Nodo DevSgte() { return Adelante; } public Nodo DevAtras() { return Atras; } public void sElemento(Medico X) { Elemento = X; } public void sSgte(Nodo Sgte) { Adelante = Sgte; } public void sAtras(Nodo Ante) { Atras = Ante; } } }

using System; using System.Collections.Generic; using System.Text; namespace ListaDoblementeEnlazada { class ListaDoble { private Nodo N; public Nodo Nodo { set { N = value; } get { return N; } } public ListaDoble() { N = new Nodo(); } public bool ListaVacia()

{ return (N.DevSgte() == null); } public void IngresarAdelante(Medico X, Nodo Sgte, Nodo Ante) { Nodo Aux1, Aux2; Aux1 = Sgte.DevSgte(); Aux2 = Ante.DevAtras(); Sgte.sSgte(new Nodo(X, Aux1, Aux2)); } public void IngresarAtras(Medico X, Nodo Sgte, Nodo Ante) { Nodo Aux1, Aux2; Aux1 = Sgte.DevAtras(); Aux2 = Ante.DevAtras(); Ante.DevAtras().sAtras(new Nodo(X, Aux1, Aux2)); } public void IngresarMedico(Medico X, Nodo Sgte, Nodo Ante) { Nodo Aux1, Aux2; Aux1 = Sgte.DevSgte(); Aux2 = Ante.DevAtras(); Sgte.sSgte(new Nodo(X, Aux1, Aux2)); Ante.sAtras(new Nodo(X, Aux1, Aux2)); } public void MostrarClientes() { Nodo P = N; Exception ex; if (ListaVacia()) { throw ex = new Exception("LA LISTA ESTA VACIA "); } else { while (P.DevSgte() != null) { Console.WriteLine("NOMBRE : " + P.DevSgte().DevElemento().DevNombre()); Console.WriteLine("POSICION : " + P.DevSgte().DevElemento().DevPosicion()); Console.WriteLine(); P = P.DevSgte(); } } } public Nodo Localizar(Medico X) { Nodo P = N; while (P.DevSgte() != null)

{ if (P.DevSgte().DevElemento().ComparaPosicion(X) == 1) { return P; } P = P.DevSgte(); } return P; } } } using System; using System.Collections.Generic; using System.Text; namespace ListaDoblementeEnlazada { class Program { static void Main(string[] args) { bool menu = true; int opcion = 0; ListaDoble L = new ListaDoble(); while (menu) { Console.Clear(); Console.WriteLine(); Console.WriteLine(" MENU DE OPCIONES"); Console.WriteLine(" ================"); Console.WriteLine(); Console.WriteLine("1.- INGRESAR MEDICO"); Console.WriteLine("2.- INGRESAR A CONTINUACION DE..."); Console.WriteLine("3.- INGRESAR ANTES DE..."); Console.WriteLine("4.- MOSTRAR LISTADO DE MEDICOS"); Console.WriteLine("5.- SALIR"); do { Console.SetCursorPosition(15, 12); Console.WriteLine("ELEGIR OPCION : "); Console.SetCursorPosition(32, 12); opcion = Convert.ToInt32(Console.ReadLine()); } while (opcion < 1 || opcion > 5); switch (opcion) { case 1: { string xNom; int xPos;

Medico M; Console.Clear(); Console.WriteLine(); Console.WriteLine(" CLIENTE"); Console.WriteLine(" ================="); Console.WriteLine(); Console.Write("NOMBRE : "); xNom = Console.ReadLine(); Console.Write("POSICION : "); xPos = Convert.ToInt32(Console.ReadLine()); M = new Medico(xNom, xPos); L.IngresarMedico(M, L.Nodo, L.Nodo); break; } case 2: { string xNom; int xPos; Nodo N; Medico M; Console.Clear(); Console.WriteLine(); Console.WriteLine(" INGRESAR MEDICO A CONTINUACION DE..."); Console.WriteLine(" ====================================="); Console.Write("INGRESE NUEVO MEDICO : "); xNom = Console.ReadLine(); Console.Write("INGRESE LA POSICION : "); xPos = Convert.ToInt32(Console.ReadLine()); M = new Medico(xNom, xPos); try { N = L.Localizar(M); L.IngresarAdelante(M, N, N); Console.WriteLine(); Console.WriteLine(" MEDICO INGRESADO..."); Console.ReadKey(); break; } catch (Exception ex) { Console.WriteLine(); Console.WriteLine(ex.Message); }

INGRESAR

Console.ReadKey(); break; } case 3: { string xNom; int xPos; Nodo N; Medico M; Console.Clear(); Console.WriteLine(); Console.WriteLine(" MEDICO ANTERIOR DE..."); Console.WriteLine(" ====================================="); Console.Write("INGRESE NUEVO MEDICO : "); xNom = Console.ReadLine(); Console.Write("INGRESE LA POSICION : "); xPos = Convert.ToInt32(Console.ReadLine()); M = new Medico(xNom, xPos); try { N = L.Localizar(M); L.IngresarAtras(M, N, N); Console.WriteLine(); Console.WriteLine(" MEDICO INGRESADO..."); Console.ReadKey(); break; } catch (Exception ex) { Console.WriteLine(); Console.WriteLine(ex.Message); } Console.ReadKey(); break; } case 4: { Console.Clear(); try { L.MostrarClientes(); } catch (Exception ex) { Console.WriteLine(); Console.WriteLine(ex.Message); } Console.ReadKey();

INGRESAR

break; } case 5: { break; } } if (opcion == 5) menu = false; } } } }