InicioHazlo Tu MismoProgramando en C# 21
Hoy por fin vamos a ver listas enlazadas... orientadas a objetos.
Para entender esto es bastante duro, les pido que sean pacientes y logren abstraerse lo suficiente para comprender la mecánica de esto.
Para empezar, una lista enlazada se da en todo lo que manejemos dentro de la informática, por más que no nos demos cuenta (si usamos linux, a menos que sea en NTFS, funciona de otra manera... aunque muy parecida.). El sistema en manejo de archivos funciona dividiendo el disco en clusters, cada uno de ellos tiene un tamaño específico. Cuando gravamos un archivo en él y éste es más grande que el cluster, lo que hace el sistema es poner una parte del archivo en ese cluster y luego con el resto del archivo lo va dejando en diferentes clusters.
Para que el sistema comprenda que distintos cluster mezclados son un archivo, lo que hace es enlazarlos, o sea, le da una referencia al primero que dice que es el primero, luego al final del cluster pone una referencia al siguiente cluster, y el siguiente al siguiente, y así continuamente hasta llegar al final.
El sistema se complementa con una tabla donde están las direcciones de todos los clusters, los de inicio de cada archivo y los que tienen pedazos de los archivos, están referenciados todos los clusters en esa tabla.
Este sistema es tremendamente conocido, seguro han escuchado hablar de él y no han comprendido de que se trataba... este sistema se llama FAT32 (que en realidad es FAT28, pero dejemos los detalles caretas al costado).

Hay dos cosas más que deben ser explicadas para que haya un concepto completo de qué es lo que se está haciendo.
La primera es la Pila: La pila es un dato que entra en una lista, a medida que van entrando datos, éste se va quedando abajo de toda la pila de datos. Si quiero sacar un dato, el último que ingresó, va a ser el primero en salir.
La segunda es la Cola: Esto funciona como cualquier cola de supermercado o de cajero automático o cola que se les ocurra, el primero en llegar es el primero en salir.

En C# se pueden hacer estas listas, se pueden fabricar, un ejemplo sólo lo daré si me lo piden dentro de los comentarios, en este caso sólo daré los que trae C# para que los usen. (La explicación previa es para que se den una idea de como funcionan).
Lo primero que veremos es que una de las clases a implementar como lista enlazada es
<?
          ArrayList miArray 
= new ArrayList();
>

Para que esta lista la puedan ver, tienen que usar un paquete que se llama System.Collections; en la parte superior del programa (en realidad por un factor de orden va arriba de todo, pero si o si lo tienen que escribir fuera de la clase que hagan)
<?
using System
.Collections;
>



En el siguiente ejemplo voy a dar una clase donde se explica cómo se usa un ArrayList

<?
using System
;
using System.Collections.Generic;
using System.Collections;
using System.Linq;
using System.Text;

namespace 
ConsoleApplication1
{
    class 
Class1
    
{
        
ArrayList miArray = new ArrayList();
        public 
void setAlArray(object o)
        {
            
miArray.Add(o);
        }
/*Agrega un valor, esto puede ser cualquier objeto o un dato concreto
          como es string, int, float, double, etc.
          */


        
public object getArray(int i)
        {
            return 
miArray[i];/*Los desarrolladores de C#
                               * han puesto esta función como si fuera un array cualquiera.
                               * Así que para devolver los datos, los podrán manejar casi como los arrays
                               * que ya vimos en otros programando en C#.
                               */

        
}

        public 
ArrayList getTodosLosArrays()
        {
            return 
miArray/*Esto devuelve una clase completa de ArrayList, esto tiene un dinamismo tal
                             Que les pido presten atención de cómo lo uso.*/          
        
}

        public 
void borrarArray()
        {
            
miArray.Clear();//Borra todo el contenido de la lista.            
        
}

        public 
void borrarUnDatoConcreto(int i)
        {
            
miArray.RemoveAt(i);//Borra un dato en una posición determinada.
        
}

        public 
void borrarUnDato(object o
        {
            
miArray.Remove(o);//Borra un objeto que sé que tengo adentro. Ojo al usar este tipo de sentencia.
            
miArray.Sort();//Ordena el ArrayList.
            
object[] miArray.ToArray();/*Transforma el ArrayList en un array común del objeto especificado. 
                                            *En este ejemplo lo hago con algo genérico.
                                            */
            
miArray.Insert(5"algo"); //Esto inserta en la posición 5 el objeto que quiera.
            
int i miArray.Count//Devuelve la cantidad de elementos en la lista, esto sirve mucho para los for.
            
int m miArray.Capacity/*Devuelve la capacidad de almacenamiento del ArrayList.
                                       *Funciona de esta manera: 
                                       *                        Si coloco un solo elemento, el ArrayList crea un espacio
                                       *                        de memoria para contener el doble.
                                       *                        Si coloco 3 elementos, el ArrayList lo que hace es
                                       *                        1 + 1 = 2, ingresa otro, 2 al cuadrado = 4, ingresa otro y sobra uno.
                                       *                        Si ingresara otro más, el Array debería tener 8 espacios.
                                       */            
        
}
    }
}
>


En el siguiente ejemplo lo que vamos a hacer es determinar el uso de lo anterior, van a ver un detalle fantástico de lo que es manejo de objetos en programación.
Ese detalle va a quedar explayado de manera perfecta en el ejemplo, si bien voy a tratar de explicarlo, lo van a entender mejor si lo ven.
Dentro de la clase ArrayList que toma cualquier dato como objeto, lo que está haciendo es darnos la posibilidad de poner cualquier objeto instanciado dentro del Array, logrando así la posibilidad de que si yo ingreso a esa posición del array, pueda manejar el objeto como si lo tuviera instanciado en la clase que lo uso.

<?
using System
;
using System.Collections.Generic;
using System.Collections;
using System.Linq;
using System.Text;

namespace 
ConsoleApplication1
{
    class 
Program
    
{
        static 
void Main(string[] args)
        {
            
Class1 c = new Class1();
            
c.setAlArray("Una cosa");
            
c.setAlArray(2);
            
c.setAlArray(3);
            
string a = (string)c.getArray(0); /* Para que funcione, como lo hice genérico, tenés que castearlo.
                                               *O sea, ponerle entre paréntesis antes de que tipo de dato se trata.
                                               */
            
string b = (string)c.getTodosLosArrays()[0];/* Acá dirán si comienzan a entender algo "CUAK!"
                                                         * Si señores, puedo usar un return de una clase y 
                                                         * mostrarla en otra si ese return es público...
                                                         * y usarla como si estuviera en esa misma clase.
                                                         * A modo de ejemplo vamos a hacer una clase dentro de otra.
                                                         */
            
Class1 x = new Class1();
            
x.setAlArray(c); //Pongo la clase c que había creado antes en la clase x.
            
string i = (string)((Class1)x.getTodosLosArrays()[0]).getTodosLosArrays()[0];/*Fijensé en el detalle
                 *Para que la clase funcione como tal, casteo, luego encierro entre paréntecis todo el conjunto
                 *y lo puedo usar como si tuviera la clase Class1 en el montón.
                 *Les recomiendo que si usan esto, no sea en más de dos clases de distancia (class1.class2.class3).
                                                                                          */
        
}
    }
}
>


Bueno, creo que esto es más que suficiente por hoy, hay al menos dos tipos o tres de listas enlazadas que debería enseñar, siendo que les puede ser útil para el desarrollo de webs. Eso será en Programando en C# 22 y 23. (Y si, ya se, me están esperando que termine el post de gráficos, así que yo, Lelale desde Taringa ya les prometo que ya lo voy a hacer, pasa que gráficos es un tema que no me apaciona demaciado).
Datos archivados del Taringa! original
31puntos
1,915visitas
0comentarios
Actividad nueva en Posteamelo
0puntos
2visitas
0comentarios
Dar puntos:

Dejá tu comentario

0/2000

Autor del Post

L
Lelale🇦🇷
Usuario
Puntos0
Posts52
Ver perfil →
PosteameloArchivo Histórico de Taringa! (2004-2017). Preservando la inteligencia colectiva de la internet hispanohablante.

CONTACTO

18 de Septiembre 455, Casilla 52

Chillán, Región de Ñuble, Chile

Solo correo postal

© 2026 Posteamelo.com. No afiliado con Taringa! ni sus sucesores.

Contenido preservado con fines históricos y culturales.