martes, 13 de diciembre de 2011

Colecciones Genéricas : "listas","pilas","colas" en C#

Listas.- Para crear una lista en colecciones genéricas tenemos que llamar al "linkedlist" que crea una lista enlazada de objetos,enteros,doubles o cadenas.
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:




1 comentario: