Documentos de Académico
Documentos de Profesional
Documentos de Cultura
UNIVERSIDAD NACIONAL JOS FAUSTINO SANCHEZ CARRIN FACULTAD DE INGENIERA ESCUELA ACADMICA PROFESIONAL DE INGENIERA DE SISTEMAS
Una cola es una estructura de datos que almacena elementos en una lista y permite acceder a los datos por uno de los extremos de la lista. Un elemento se inserta en la cola (parte final) de la lista y se suprime o elimina por el frente (parte inicial, cabeza o frente) de la lista. Las aplicaciones utilizan una cola para almacenar elementos en un orden de aparicin o concurrencia.
FINAL (Ultimo)
FRENTE (Primero)
Los elementos se eliminan (se quitan) de la cola en el mismo orden en que se almacenan y por consiguiente, una cola es una estructura de tipo FIFO (First-Input / First-Output primero en entrar primero en salir o bien primero en llegar primero en ser atendido). Un servicio atencin al cliente en una empresa, la gestin de tareas de impresin, son los ejemplos. Desde el punto de vista de estructura de datos, una cola es similar a una pila, en donde los datos se almacenan de un modo lineal y el acceso a los datos solo est permitido en los extremos de la cola.
Las entradas de la pila deben ser eliminadas en el orden inverso al que se situaron en la misma. Debido a la propiedad especfica ltimo en entrar-primero en salir a las pilas se les conoce como estructuras de datos LIFO (LAST-INPUT, FIRST-OUTPUT). Las operaciones usuarios en la pila son: insertar, quitar. La operacin insertar (Push) aade un elemento en la Cima de la pila y la operacin Quitar (Pop) elimina un elemento de la pila.
LISTAS ENLAZADAS
Las listas enlazadas (ligada o encadenada o linked list ) es una coleccin de elementos (llamados nodos) dispuestos uno a continuacin de otro, cada uno de ellos conectado al siguiente elemento por un enlace o referencia. La idea bsica consiste en construir una lista de elementos llamados nodos que se componen de dos partes: la primera parte que contiene la informacin y es por consiguiente un valor de tipo registro y la segunda parte un campo de tipo referencia que apunta al siguiente elemento (nodo) de la lista.
Las listas enlazadas son accedidas por un variable referencia (primero) que apunta al primer elemento; este primer elemento apunta al segundo y as sucesivamente hasta encontrar al ltimo elemento cuyo enlace no apunta a ningn nodo por lo cual se indica que apunta a null.
Informaci nnDatos
Enlace
null
using System; namespace ListasEnlazadas { public class Nodo { private Empleado empleado; private Nodo siguiente; public Nodo ( Empleado empleado ) { this.empleado = empleado; } public Empleado getEmpleado ( ) { return empleado; } public void setEmpleado ( Empleado empleado ) { this.empleado = empleado; } public Nodo getSiguiente ( )
} }
using System; namespace ListasEnlazadas { public class Cola { private Nodo primero; private Nodo ultimo; public Cola() { primero=null; Ultimo=null; } public Nodo getPrimero() { return primero; } public void setPrimero(Nodo primero) { this.primero = primero; } public Nodo getUltimo() { return ultimo; } public void setUltimo(Nodo ultimo) { this.ultimo = ultimo; } public void agrega (Empleado empleado) { Nodo nuevo; nuevo = new Nodo(empleado); nuevo.setSiguiente(null); if ( primero == null ) { primero = nuevo; } else { ultimo.setSiguiente(nuevo); } ultimo = nuevo; } public Boolean esVacia ( ) { return primero == null; } public double totalizarSueldos ( ) { Nodo auxiliar; double totalDeSueldos=0; auxiliar = primero; while ( auxiliar != null ) { totalDeSueldos = totalDeSueldos + auxiliar.getEmpleado().getSueldo(); auxiliar = auxiliar.getSiguiente(); } return totalDeSueldos; } public void eliminar (Empleado oEmpleado) { int encontrado=0; Nodo actual; Nodo anterior; if (!esVacia()) { actual = primero; anterior = primero; while ((actual != null) && (encontrado == 0)) { if (actual.getEmpleado().getEmpleado_id() == oEmpleado.getEmpleado_id() ) { encontrado = 1; }
} public void Listado () { if (!esVacia()) { Nodo auxiliar; auxiliar = primero; while ( auxiliar != null ) { Empleado oEmpleado; oEmpleado = auxiliar.getEmpleado(); Console.Write("Empleado_id : " + oEmpleado.getEmpleado_id()+\t); Console.WriteLine("Apellido : " + oEmpleado.getApellido()+\t); Console.WriteLine("Nombre : " + oEmpleado.getNombre()++\t); Console.WriteLine("Sueldo : " + oEmpleado.getSueldo()+\n); auxiliar = auxiliar.getSiguiente(); } } else { Console.WriteLine("Lista vaca !!!"); } } } public void vaciar ( ) { primero = null; } } using System; namespace ListasEnlazadas { public class Program { static void Main ( string[] args ) { Cola oCola= new Cola(); ConsoleKeyInfo opcion; do { menuPrincipal(); opcion = Console.ReadKey(true); Console.WriteLine(); switch (opcion.Key )
} public static void menuPrincipal() { Console.WriteLine ("\tMen Principal"); Console.WriteLine ("\t--------------"); Console.WriteLine("(A)gregar"); Console.WriteLine("(E)liminar"); Console.WriteLine("(T)otalizar sueldos"); Console.WriteLine("(L)istar"); Console.WriteLine("(S)alir"); Console.Write("Elija su opcin: "); } public static Cola agregar(Cola oCola) { Empleado oEmpleado= new Empleado(); Console.Write("Empleado_id : "); oEmpleado.setEmpleado_id(Int32.Parse(Console.ReadLine())); Console.Write("Sueldo : "); oEmpleado.setSueldo(Double.Parse(Console.ReadLine())); oCola.agrega(oEmpleado); return oCola; } public static Cola eliminar(Cola oCola) { Empleado oEmpleado= new Empleado(); Console.Write("Empleado_id : "); oEmpleado.setEmpleado_id(Int32.Parse(Console.ReadLine())); oCola.eliminar(oEmpleado); return oCola; } public static void totalizar(Cola oCola) { double total=oCola.totalizarSueldos(); Console.WriteLine("Total : "+total); } public static void listar(Cola oCola) { oCola.Listado(); } } }
4 5000 0005
Primero = 4000
4000 4
3000 3 2
2000
1000 1
Nuevo = 5000
5
5000
null
Primero= 4000
4000 4
3000 3 2
2000
1000 1
null
2000 1000 1
A continuacin se presenta el mtodo para convertir la lista enlazada tipo cola a lista enlazada null tipo pila:
public void agrega(Empleado empleado) { Nodo nuevo; Nodo nuevo = new Nodo(empleado); nuevo.setSiguiente(primero); primero=nuevo; }