En la lista como se sabe su logica se puede insertar nodos en el frente,atras,ultimo,y de igual forma se puede eliminar en cualquier posicion.
Pilas.- Para crear una pila en colecciones genéricas tenemos que llamar al "stack" que crea una pila de objetos,enteros,doubles o cadenas.
En la pila como sabemos su logica solo se puede insertar al comienzo y se elimina al comienzo.
cola.- Para crear una cola en colecciones genéricas tenemos que llamar al "queue" que crea una pila de objetos,enteros,doubles o cadenas.
En la cola como sabemos solo podemos insertar a lo ultimo y se elimina al principio.
Bueno aqui les mostrare como insertar,eliminar,invertir,mostrar el maximo elemento,el minimo elemento,y contar los objetos de una lista,pila y cola.
FrmColecciones:
public partial class btninvertir : Form
{
//codigo del progrmador
//crear la lista enlazada con la coleccion generica LinkedList
LinkedList<object> lista = new LinkedList<object> { };
//listas de enteros
LinkedList<int> lista2 = new LinkedList<int>();
//pila de objetos
Stack<object> pila = new Stack<object> { };
object j, k, l, f;
int b, c, d;
/// <summary>
/// /
/// </summary>
public btninvertir()
{
InitializeComponent();
}
private void Form1_Load(object sender, EventArgs e)
{
}
private void button1_Click(object sender, EventArgs e)
{
//añadir haciendo uso de los metodos atras y adelante de la clase LinkedList
//inserta a lo ultimo
lista.AddLast(23);
//inserta al principio
lista.AddFirst("jose");
lista.AddFirst("maria");
lista.AddFirst("pedro");
lista.AddLast(100000);
lista.AddLast(20);
lista.AddFirst("ana");
//elimina el objeto jose
lista.Remove("jose");
lista2.AddLast(5);
lista2.AddFirst(8);
lista2.AddLast(30);
lista2.AddLast(23);
// agrega el objeto juana antes del primero
lista.AddBefore(lista.First, "juana");
//lista.Reverse();
// busca el minimo,maximo y suma los elementos de la lista2
b = lista2.Max();
c = lista2.Sum();
d = lista2.Min();
// cuenta los objetos agregados en la lista 1
f = lista.Count();
//añadir nodos creandolos primero y luego añadiendolos
//LinkedListNode<object> nodo1 = lista.Find("maria");
//muestra el minimo,maximo,la suma de los elementos de la lista2 y la cantidad de objetos de la lista1
}
private void button2_Click_1(object sender, EventArgs e)
{
listBox1.Items.Add("Lista1 :");
foreach (var item in lista)
{
listBox1.Items.Add(item);
}
listBox1.Items.Add("la lista1 tiene " + f + " objetos");
listBox1.Items.Add("Lista2:");
foreach (var item in lista2)
{
listBox1.Items.Add(item);
}
listBox1.Items.Add("El maximo es:\n" + b);
listBox1.Items.Add("la suma de la lista2 es:\n" + c);
listBox1.Items.Add("el minimo de la lista2 es :\n" + d);
}
//muestra la lista invertida
private void btninvertirlista_Click(object sender, EventArgs e)
{
lista = listareversa(lista);
listBox2.Items.Add("lista invertida:");
foreach (var s in lista)
{
listBox2.Items.Add(s);
}
}
//invierte la lista1 y la carga
private LinkedList<object> listareversa(LinkedList<object> listareversa)
{
LinkedList<object> tempa = new LinkedList<object>();
foreach (var s in listareversa)
{
tempa.AddFirst(s);
}
return tempa;
}
//metodo que nos limpia el listbox
private void button3_Click(object sender, EventArgs e)
{
listBox1.Items.Clear();
listBox2.Items.Clear();
}
private void btnsalir_Click(object sender, EventArgs e)
{
this.Close();
}
private void btncargarpila_Click(object sender, EventArgs e)
{
// el ultimo en agrergar es el primero de la pila
pila.Push(45);
pila.Push(12);
pila.Push(67);
pila.Push(123);
pila.Push(65);
pila.Push(111);
//elimina el ultimo en ingresar
pila.Pop();
//pila.Pop();
//cuenta los objetos,busca el maximo y busca el minimo
j = pila.Count();
k = pila.Max();
l = pila.Min();
}
private void btnmostrarpila_Click(object sender, EventArgs e)
{
listBox1.Items.Add("Pila :");
foreach (var item in pila)
{
listBox1.Items.Add(item);
}
listBox1.Items.Add("objetos de la pila : " + j);
listBox1.Items.Add("mayor es : " + k);
listBox1.Items.Add("menor es : " + l);
}
//muestra la pila invertida
private void button4_Click(object sender, EventArgs e)
{
pila = reversa(pila);
listBox2.Items.Add("pila invertida:");
foreach (var s in pila)
{
listBox2.Items.Add(s);
}
}
//invierte la pila y la carga
private Stack<object> reversa(Stack<object> pilareversa)
{
Stack<object> temp = new Stack<object>();
foreach (var s in pilareversa)
{
temp.Push(s);
}
return temp;
}
}
private void btncargarcola_Click(object sender, EventArgs e)
{
cola.Enqueue(7);
cola.Enqueue(8);
cola.Enqueue(9);
cola.Enqueue(10);
}
private void btnmostrarcola_Click(object sender, EventArgs e)
{
foreach (var i in cola) {
listBox1.Items.Add(i);
}
listBox1.Items.Add("#######################################");
}
//invierte la cola
private void button1_Click_1(object sender, EventArgs e)
{
foreach (var i in cola.Reverse())
{
listBox2.Items.Add(i);
}
listBox2.Items.Add("#######################################");
}
}
Interfaz Grafica: