COLAS
Una cola con nodos es una estructura de
datos lineal que sigue el principio FIFO (First-In, First-Out), pero que en
lugar de usar un arreglo (vector) con tamaño fijo, utiliza objetos conectados
entre sí.
Aquí tienes el concepto desglosado en
puntos clave:
1. El concepto de Nodo
Imagina que cada elemento es un
"vagón" de un tren. Un nodo es un objeto que tiene dos
compartimentos:
Dato: La información que guardas (en tu
caso, un string).
Enlace (Siguiente): Una flecha o puntero
que apunta a la ubicación del siguiente nodo en la memoria.
2. Memoria Dinámica
A diferencia de un arreglo donde debes
decir "esta cola tendrá 10 espacios", en una cola con nodos la
memoria se solicita conforme se necesita.
Si agregas un elemento, creas un nodo.
Si lo quitas, el nodo se destruye.
La cola puede crecer infinitamente mientras
tengas memoria RAM disponible.
3. Los Punteros de Control
Para que una cola funcione, necesitamos
saber siempre dos cosas:
Frente (Primero): ¿Quién es el que sigue
para salir? (De aquí se desencola).
Final (Último): ¿Quién es el más reciente
en llegar? (Aquí se encola).
CODIGO:
using System;
using System.Runtime.CompilerServices;
using System.Security.Cryptography.X509Certificates;
class Nodo
{
public int dato;
public Nodo Siguiente;
public Nodo(int dato)
{
this.dato = dato;
this.Siguiente=null;
}
}
class Cola
{
private Nodo inicio;
private Nodo final;
public Cola()
{
inicio = null;
final = null;
}
public void Encolar(int valor)
{
Nodo nuevoNodo = new Nodo(valor);
if (inicio == null)
{
inicio = nuevoNodo;
final = nuevoNodo;
}
else
{
final.Siguiente = nuevoNodo;
final = nuevoNodo;
}
}
public int desencolar()
{
if (inicio == null)
{
Console.WriteLine("la
cola esta vacia");
return -1;
}
int aux = inicio.dato;
inicio = inicio.Siguiente;
if (inicio == null)
{
final = null;
}
return aux;
}
public void mostrar()
{
if (inicio == null)
{
Console.WriteLine("la
cola esta vacia");
return;
}
Nodo actual = inicio;
Console.WriteLine("la
cola :");
while (actual != null)
{
Console.WriteLine(actual.dato
+ " ");
actual = actual.Siguiente;
}
Console.WriteLine();
}
class Programa
{
static void Main()
{
Cola cola = new Cola();
cola.Encolar(5);
cola.Encolar(14);
cola.Encolar(3);
cola.Encolar(33);
cola.Encolar(9);
cola.Encolar(14);
cola.Encolar(17);
cola.Encolar(4);
cola.mostrar();
//Console.WriteLine("frente"+cola.)
Console.WriteLine("desencolar"
+ cola.desencolar());
cola.mostrar();
}
}


No hay comentarios.:
Publicar un comentario