SlideShare una empresa de Scribd logo
Listas En Ciencias de la Computación, una lista enlazada es una de las estructuras de datos fundamentales, y puede ser usada para implementar otras estructuras de datos. Consiste en una secuencia de nodos, en los que se guardan campos de datos arbitrarios y una o dos referencias(punteros) al nodo anterior y/o posterior. El principal beneficio de las listas enlazadas respecto a los array convencionales es que el orden de los elementos enlazados puede ser diferente al orden de almacenamiento en la memoria o el disco, permitiendo que el orden de recorrido de la lista sea diferente al de almacenamiento. Una lista enlazada es un tipo de dato auto-referenciado porque contienen un puntero o link a otro dato del mismo tipo. Las listas enlazadas permiten inserciones y eliminación de nodos en cualquier punto de la lista en tiempo constante (suponiendo que dicho punto está previamente identificado o localizado), pero no permiten un acceso aleatorio. Existen diferentes tipos de listas enlazadas: Lista Enlazadas Simples, Listas Doblemente Enlazadas, Listas Enlazadas Circulares y Listas Enlazadas Doblemente Circulares. Las listas enlazadas pueden ser implementadas en muchos lenguajes. Lenguajes tales como Lisp y Scheme tiene estructuras de datos ya construidas, junto con operaciones para acceder a las listas enlazadas. Lenguajes imperativos u orientados a objetos tales como C o C++ yJava, respectivamente, disponen de referencias para crear listas enlazadas. Tipos de Listas Enlazadas  Listas enlazadas lineales  Listas simples enlazadas  La lista enlazada básica es la lista enlazada simple la cual tiene un enlace por nodo. Este enlace apunta al siguiente nodo en la lista, o al valor NULL o a la lista vacía, si es el último nodo. Una lista enlazada simple contiene dos valores: el valor actual del nodo y un enlace al siguiente nodo Lista Doblemente Enlazada  Un tipo de lista enlazada más sofisticado es la lista doblemente enlazada o lista enlazadas de dos vías. Cada nodo tiene dos enlaces: uno apunta al nodo anterior, o apunta al valor NULL si es el primer nodo; y otro que apunta al nodo siguiente, o apunta al valor NULL si es el último nodo. Una lista doblemente enlazada contiene tres valores: el valor, el link al nodo siguiente, y el link al anterior En algún lenguaje de muy bajo nivel, XOR-Linking ofrece una vía para implementar listas doblemente enlazadas, usando una sola palabra para ambos enlaces, aunque el uso de esta técnica no se suele utilizar. Listas enlazadas circulares  En una lista enlazada circular, el primer y el último nodo están unidos juntos. Esto se puede hacer tanto para listas enlazadas simples como para las doblemente enlazadas. Para recorrer una lista enlazada circular podemos empezar por cualquier nodo y seguir la lista en cualquier dirección hasta que se regrese hasta el nodo original. Desde otro punto de vista, las listas enlazadas circulares pueden ser vistas como listas sin comienzo ni fin. Este tipo de listas es el más usado para dirigir buffers para “ingerir” datos, y para visitar todos los nodos de una lista a partir de uno dado. Una lista enlazada circular que contiene tres valores enteros Listas enlazadas circulares simples  Cada nodo tiene un enlace, similar al de las listas enlazadas simples, excepto que el siguiente nodo del último apunta al primero. Como en una lista enlazada simple, los nuevos nodos pueden ser solo eficientemente insertados después de uno que ya tengamos referenciado. Por esta razón, es usual quedarse con una referencia solamente al último elemento en una lista enlazada circular simple, esto nos permite rápidas inserciones al principio, y también permite accesos al primer nodo desde el puntero del último nodo. 1 Lista Enlazada Doblemente Circular  En una lista enlazada doblemente circular, cada nodo tiene dos enlaces, similares a los de la lista doblemente enlazada, excepto que el enlace anterior del primer nodo apunta al último y el enlace siguiente del último nodo, apunta al primero. Como en una lista doblemente enlazada, las inserciones y eliminaciones pueden ser hechas desde cualquier punto con acceso a algún nodo cercano. Aunque estructuralmente una lista circular doblemente enlazada no tiene ni principio ni fin, un puntero de acceso externo puede establecer el nodo apuntado que está en la cabeza o al nodo cola, y así mantener el orden tan bien como en una lista doblemente enlazada. Nodos Centinelas  A veces las listas enlazadas tienen un nodo centinela (también llamado falso nodo o nodo ficticio) al principio y/o al final de la lista, el cual no es usado para guardar datos. Su propósito es simplificar o agilizar algunas operaciones, asegurando que cualquier nodo tiene otro anterior o posterior, y que toda la lista (incluso alguna que no contenga datos) siempre tenga un “primer y último” nodo. La clase LinkedNode en C#. Interfaz Ilist Las listas (List) en C# son colecciones de datos mucho más potentes y funcionales que los arrays, por lo que su uso es muy común en el desarrollo de aplicaciones. Y es que con las listas (List) todo se hace mucho más sencillo. Ahorramos código y disponemos de los métodos que siempre soñamos tener en la clase Array. En este tutorial veremos como crear nuestra propia lista de elementos usando nodos enlazables, así como programar los métodos Add, Insert, Remove, IndexOf, Contains, Clear y otras funciones disponibles en la Interfaz IList. ¿Qué es un nodo enlazable?Un nodo enlazable es una clase que tiene principalmente un valor de tipo object y un enlace hacia el nodo siguiente. ¿Para que sirve?Los nodos enlazables pueden ser utilizados para almacenar los elementos de la lista que queremos crear. De igual manera podríamos usar un array, pero además de ser mucho más costoso, a mí me gustan más los nodos enlazables. Por tanto esta sería la clase Nodo: Ahora que ya tenemos nuestra clase Nodo, crearemos nuestra lista. Una clase a la que llamaremos ListaEnlazable. Como todas, las listas van a tener las mismas funcionalidades, las que heredaremos de una interfaz llamada IList. Para quienes no lo saben, una interfaz es una especie de plantilla, con un conjunto de métodos y propiedades definidas pero no programadas y que las podemos usar en clases y estructuras. Para usar la interfaz Ilist creamos la clase ListaEnlazable y heredamos de la interfaz Ilist que viene por defecto con el Visual Studio. Luego hacemos clic derecho sobre Ilist y seleccionamos Implementar Interfaz (Implement interface): Pues bien, ahora vamos a crear las variables necesarias para programar cada uno de los métodos de la interfaz Ilist. Necesitaremos dos Nodos: primero y último, para poder recorrer la lista, y empezar desde algún lugar. Además podríamos necesitar un contador, que permita saber la cantidad de elementos que hay en un momento dado. Y el constructor por defecto lo único que haría es inicializar las variables, para crear una nueva ListaEnlazable vacía. De esta forma, tendríamos algo como lo siguiente: public void Add(object x) La función de este método es añadir un elemento al final de la lista. Veamos la implementación de Add: Como ven, es muy sencillo, solo hay que crear un nuevo nodo, enlazar el último con este nuevo nodo y luego poner este nodo como último. public void Insert(int index, object x) Añade un elemento a la lista, pero a diferencia de Add(object x), este lo inserta en una posición dada. Como ven, hay que recorrer la lista hasta encontrar la posición donde queremos insertar el elemento. public int IndexOf(object x) Devuelve la posición de un elemento de la lista. Al final, si este método no encuentra el elemento x en la lista, retorna -1, veamos como usar esto en el siguiente método. public bool Contains(object x) Este método nos dice si un elemento está o no en la lista. Devuelve true en caso de que la lista contenga al elemento x y false en caso contrario. La operación es muy simple, pues usamos IndexOf(x) que ya está implementado en esta clase. public void Remove(object x) Método para quitar el elemento x de la lista. Simplemente busca el elemento en la lista y actualiza la propiedad siguiente saltándose el nodo cuyo valor es x. Nos quedan dos métodos que deberás implementar tú mismo, usando los algoritmos que ya hemos visto en la clase ListaEnlazable: public void RemoveAt(int index) Elimina de la lista el elemento que está en la posición index. Public void Clear() Clear no recibe ningún parámetro y su función es reiniciar la lista, o sea vaciarla. Fíjense en el constructor. Public object this [int index] Por último, veamos cómo programar el indexer, una especie de propiedad que permite seleccionar el elemento de la lista especificando una posición, como hacemos con el array, por ejemplo: No se asusten porque el código es un poco largo, fíjense que es casi lo mismo en el get y en el set, la diferencia está en que get es para leer el elemento, y set para cambiarlo.
Listas en C#
Listas en C#
Listas en C#
Listas en C#
Listas en C#
Listas en C#
Listas en C#

Más contenido relacionado

La actualidad más candente

1.5.1 Representación en memoria estática y dinámica.pptx
1.5.1 Representación en memoria estática y dinámica.pptx1.5.1 Representación en memoria estática y dinámica.pptx
1.5.1 Representación en memoria estática y dinámica.pptx
Fernando Solis
 
Algoritmos de Ordenamiento Externo.
Algoritmos de Ordenamiento Externo.Algoritmos de Ordenamiento Externo.
Algoritmos de Ordenamiento Externo.
Universidad de Cuenca
 
Data Structures- Part7 linked lists
Data Structures- Part7 linked listsData Structures- Part7 linked lists
Data Structures- Part7 linked lists
Abdullah Al-hazmy
 
Tipos de listas en estructura de datos
Tipos de listas en estructura de datosTipos de listas en estructura de datos
Tipos de listas en estructura de datos
Carlos Alberto Cuervo Cardenas
 
Tad Colas
Tad ColasTad Colas
Estructura de Datos -Unidad III: Estructuras Lineales
Estructura de Datos -Unidad III: Estructuras LinealesEstructura de Datos -Unidad III: Estructuras Lineales
Estructura de Datos -Unidad III: Estructuras Lineales
José Antonio Sandoval Acosta
 
Método de Ordenamiento Directa (Burbuja)
Método de Ordenamiento Directa (Burbuja)Método de Ordenamiento Directa (Burbuja)
Método de Ordenamiento Directa (Burbuja)
Sarai Gotopo
 
Implementacion de bases de datos en mysql
Implementacion de bases de datos en mysqlImplementacion de bases de datos en mysql
Implementacion de bases de datos en mysql
Pipe Muñoz
 
linked lists in data structures
linked lists in data structureslinked lists in data structures
linked lists in data structures
DurgaDeviCbit
 
3. algoritmos de ordenamiento interno
3. algoritmos de ordenamiento interno3. algoritmos de ordenamiento interno
3. algoritmos de ordenamiento interno
Fernando Solis
 
Estructura de datos: lista, pilas y colas
Estructura de datos: lista, pilas y colasEstructura de datos: lista, pilas y colas
Estructura de datos: lista, pilas y colasHuascar Génere
 
E.d. lineales y no lineales
E.d. lineales y no linealesE.d. lineales y no lineales
E.d. lineales y no lineales
Gaby Toriz
 
INDICES EN SQL SERVER
INDICES EN SQL SERVERINDICES EN SQL SERVER
INDICES EN SQL SERVERDarwin Durand
 
Polynomial reppresentation using Linkedlist-Application of LL.pptx
Polynomial reppresentation using Linkedlist-Application of LL.pptxPolynomial reppresentation using Linkedlist-Application of LL.pptx
Polynomial reppresentation using Linkedlist-Application of LL.pptx
Albin562191
 
Algoritmo de quicksort
Algoritmo de quicksortAlgoritmo de quicksort
Algoritmo de quicksort
Jorge Villarreal
 
Cuadro comparativo algoritmos de ordenamiento
Cuadro comparativo algoritmos de ordenamientoCuadro comparativo algoritmos de ordenamiento
Cuadro comparativo algoritmos de ordenamiento
Lutzo Guzmán
 

La actualidad más candente (20)

1.5.1 Representación en memoria estática y dinámica.pptx
1.5.1 Representación en memoria estática y dinámica.pptx1.5.1 Representación en memoria estática y dinámica.pptx
1.5.1 Representación en memoria estática y dinámica.pptx
 
Algoritmos de Ordenamiento Externo.
Algoritmos de Ordenamiento Externo.Algoritmos de Ordenamiento Externo.
Algoritmos de Ordenamiento Externo.
 
Data Structures- Part7 linked lists
Data Structures- Part7 linked listsData Structures- Part7 linked lists
Data Structures- Part7 linked lists
 
Tipos de listas en estructura de datos
Tipos de listas en estructura de datosTipos de listas en estructura de datos
Tipos de listas en estructura de datos
 
Tad Colas
Tad ColasTad Colas
Tad Colas
 
Estructura de Datos -Unidad III: Estructuras Lineales
Estructura de Datos -Unidad III: Estructuras LinealesEstructura de Datos -Unidad III: Estructuras Lineales
Estructura de Datos -Unidad III: Estructuras Lineales
 
Colas
ColasColas
Colas
 
Método de Ordenamiento Directa (Burbuja)
Método de Ordenamiento Directa (Burbuja)Método de Ordenamiento Directa (Burbuja)
Método de Ordenamiento Directa (Burbuja)
 
Implementacion de bases de datos en mysql
Implementacion de bases de datos en mysqlImplementacion de bases de datos en mysql
Implementacion de bases de datos en mysql
 
linked lists in data structures
linked lists in data structureslinked lists in data structures
linked lists in data structures
 
3. algoritmos de ordenamiento interno
3. algoritmos de ordenamiento interno3. algoritmos de ordenamiento interno
3. algoritmos de ordenamiento interno
 
Listas, pilas y colas
Listas, pilas y colasListas, pilas y colas
Listas, pilas y colas
 
Listas,pilas y colas Estructura de Datos
Listas,pilas y colas Estructura de DatosListas,pilas y colas Estructura de Datos
Listas,pilas y colas Estructura de Datos
 
Listas
ListasListas
Listas
 
Estructura de datos: lista, pilas y colas
Estructura de datos: lista, pilas y colasEstructura de datos: lista, pilas y colas
Estructura de datos: lista, pilas y colas
 
E.d. lineales y no lineales
E.d. lineales y no linealesE.d. lineales y no lineales
E.d. lineales y no lineales
 
INDICES EN SQL SERVER
INDICES EN SQL SERVERINDICES EN SQL SERVER
INDICES EN SQL SERVER
 
Polynomial reppresentation using Linkedlist-Application of LL.pptx
Polynomial reppresentation using Linkedlist-Application of LL.pptxPolynomial reppresentation using Linkedlist-Application of LL.pptx
Polynomial reppresentation using Linkedlist-Application of LL.pptx
 
Algoritmo de quicksort
Algoritmo de quicksortAlgoritmo de quicksort
Algoritmo de quicksort
 
Cuadro comparativo algoritmos de ordenamiento
Cuadro comparativo algoritmos de ordenamientoCuadro comparativo algoritmos de ordenamiento
Cuadro comparativo algoritmos de ordenamiento
 

Destacado

Algoritmo de listas simples completo
Algoritmo de listas simples  completoAlgoritmo de listas simples  completo
Algoritmo de listas simples completoBoris Salleg
 
Tipos Datos y Operadores en Visual C# (C sharp)
Tipos Datos y Operadores en Visual C# (C sharp)Tipos Datos y Operadores en Visual C# (C sharp)
Tipos Datos y Operadores en Visual C# (C sharp)
Pedro Antonio Villalta (Pavillalta)
 
LT Social: Portal de Intervención
LT Social: Portal de IntervenciónLT Social: Portal de Intervención
LT Social: Portal de Intervención
Jose Brey Calvo
 
Inserción Listas Enlazadas Simples
Inserción Listas Enlazadas SimplesInserción Listas Enlazadas Simples
Inserción Listas Enlazadas Simples
yatarihuana
 
PROYECTO final de curso - Listas dobles
PROYECTO final de curso - Listas doblesPROYECTO final de curso - Listas dobles
PROYECTO final de curso - Listas dobles
Maiky Kobatakane
 
Funcionamiento de un pila
Funcionamiento de un pilaFuncionamiento de un pila
Funcionamiento de un pilajefer
 
Diapositiva de l estructura de datos
Diapositiva de l estructura de datosDiapositiva de l estructura de datos
Diapositiva de l estructura de datosmariajuly
 
Tipos de datos C#
Tipos de datos C#Tipos de datos C#
Tipos de datos C#alex28Xx
 
Aprenda a conectar sql y c# en 19 sencillos pasos!
Aprenda a conectar sql y c# en 19 sencillos pasos!Aprenda a conectar sql y c# en 19 sencillos pasos!
Aprenda a conectar sql y c# en 19 sencillos pasos!
Ziscko
 
Rangos de IPs Públicas y Privadas
Rangos de IPs Públicas y PrivadasRangos de IPs Públicas y Privadas
Rangos de IPs Públicas y Privadas
Victor Caleb Cantu Perez
 
sesion de clases de inicial
sesion de clases de inicialsesion de clases de inicial
sesion de clases de inicial
Margot Jesica Mendoza Salome
 
Jugando Aprendo Las Figuras GeoméTricas Y Colores Primarios Diplomado 2
Jugando Aprendo Las Figuras GeoméTricas Y Colores Primarios Diplomado  2Jugando Aprendo Las Figuras GeoméTricas Y Colores Primarios Diplomado  2
Jugando Aprendo Las Figuras GeoméTricas Y Colores Primarios Diplomado 2Profa: Carolina Castillo
 

Destacado (15)

Lista simple
Lista simpleLista simple
Lista simple
 
Pilas, colas, y listas estructura de datos
Pilas, colas, y listas estructura de datosPilas, colas, y listas estructura de datos
Pilas, colas, y listas estructura de datos
 
Algoritmo de listas simples completo
Algoritmo de listas simples  completoAlgoritmo de listas simples  completo
Algoritmo de listas simples completo
 
Arreglos C#
Arreglos C#Arreglos C#
Arreglos C#
 
Tipos Datos y Operadores en Visual C# (C sharp)
Tipos Datos y Operadores en Visual C# (C sharp)Tipos Datos y Operadores en Visual C# (C sharp)
Tipos Datos y Operadores en Visual C# (C sharp)
 
LT Social: Portal de Intervención
LT Social: Portal de IntervenciónLT Social: Portal de Intervención
LT Social: Portal de Intervención
 
Inserción Listas Enlazadas Simples
Inserción Listas Enlazadas SimplesInserción Listas Enlazadas Simples
Inserción Listas Enlazadas Simples
 
PROYECTO final de curso - Listas dobles
PROYECTO final de curso - Listas doblesPROYECTO final de curso - Listas dobles
PROYECTO final de curso - Listas dobles
 
Funcionamiento de un pila
Funcionamiento de un pilaFuncionamiento de un pila
Funcionamiento de un pila
 
Diapositiva de l estructura de datos
Diapositiva de l estructura de datosDiapositiva de l estructura de datos
Diapositiva de l estructura de datos
 
Tipos de datos C#
Tipos de datos C#Tipos de datos C#
Tipos de datos C#
 
Aprenda a conectar sql y c# en 19 sencillos pasos!
Aprenda a conectar sql y c# en 19 sencillos pasos!Aprenda a conectar sql y c# en 19 sencillos pasos!
Aprenda a conectar sql y c# en 19 sencillos pasos!
 
Rangos de IPs Públicas y Privadas
Rangos de IPs Públicas y PrivadasRangos de IPs Públicas y Privadas
Rangos de IPs Públicas y Privadas
 
sesion de clases de inicial
sesion de clases de inicialsesion de clases de inicial
sesion de clases de inicial
 
Jugando Aprendo Las Figuras GeoméTricas Y Colores Primarios Diplomado 2
Jugando Aprendo Las Figuras GeoméTricas Y Colores Primarios Diplomado  2Jugando Aprendo Las Figuras GeoméTricas Y Colores Primarios Diplomado  2
Jugando Aprendo Las Figuras GeoméTricas Y Colores Primarios Diplomado 2
 

Similar a Listas en C#

Listas c#
Listas c#Listas c#
Listas c#rezzaca
 
Programación 3: listas enlazadas
Programación 3: listas enlazadasProgramación 3: listas enlazadas
Programación 3: listas enlazadas
Angel Vázquez Patiño
 
listas Luis Guarata 31332901.pdf
listas Luis Guarata 31332901.pdflistas Luis Guarata 31332901.pdf
listas Luis Guarata 31332901.pdf
LuisAGuarata
 
Unidad tres estructura de datos
Unidad tres estructura de datosUnidad tres estructura de datos
Unidad tres estructura de datos
René Sosa Arana
 
Estructura de dato unidad 3
Estructura de dato unidad 3Estructura de dato unidad 3
Estructura de dato unidad 3lenithoz
 
Estructura de datos
Estructura de datosEstructura de datos
Estructura de datos
René Sosa Arana
 
Listas
ListasListas
Unidad Iii
Unidad IiiUnidad Iii
Unidad IiiAna
 
Unidad 3
Unidad 3Unidad 3
Unidad 3
Jorge Ake Pech
 
Unidad 3
Unidad 3Unidad 3
Listas java
Listas javaListas java
Listas java
Marc Anthony
 
Unidad 3 Listas Enlazadas
Unidad 3 Listas EnlazadasUnidad 3 Listas Enlazadas
Unidad 3 Listas Enlazadas
guest4c52363
 
Unidad 3 Listas Enlazadas
Unidad 3 Listas EnlazadasUnidad 3 Listas Enlazadas
Unidad 3 Listas Enlazadas
guest4c52363
 
Unidad 3 Listas Enlazadas
Unidad 3 Listas EnlazadasUnidad 3 Listas Enlazadas
Unidad 3 Listas Enlazadas
guest4c52363
 
Unidad 3 Listas Enlazadas
Unidad 3 Listas EnlazadasUnidad 3 Listas Enlazadas
Unidad 3 Listas Enlazadas
guest4c52363
 
Unidad 3 Listas Enlazadas
Unidad 3 Listas EnlazadasUnidad 3 Listas Enlazadas
Unidad 3 Listas Enlazadas
guest4c52363
 

Similar a Listas en C# (20)

Listas c#
Listas c#Listas c#
Listas c#
 
Programación 3: listas enlazadas
Programación 3: listas enlazadasProgramación 3: listas enlazadas
Programación 3: listas enlazadas
 
Teoria de listas
Teoria de listasTeoria de listas
Teoria de listas
 
listas Luis Guarata 31332901.pdf
listas Luis Guarata 31332901.pdflistas Luis Guarata 31332901.pdf
listas Luis Guarata 31332901.pdf
 
Unidad tres estructura de datos
Unidad tres estructura de datosUnidad tres estructura de datos
Unidad tres estructura de datos
 
Unidad _ III
Unidad _ IIIUnidad _ III
Unidad _ III
 
Estructura de dato unidad 3
Estructura de dato unidad 3Estructura de dato unidad 3
Estructura de dato unidad 3
 
Estructura de datos
Estructura de datosEstructura de datos
Estructura de datos
 
Listas
ListasListas
Listas
 
Unidad III
Unidad IIIUnidad III
Unidad III
 
Unidad Iii
Unidad IiiUnidad Iii
Unidad Iii
 
Unidad 3
Unidad 3Unidad 3
Unidad 3
 
Unidad 3
Unidad 3Unidad 3
Unidad 3
 
Estructuras lineales
Estructuras linealesEstructuras lineales
Estructuras lineales
 
Listas java
Listas javaListas java
Listas java
 
Unidad 3 Listas Enlazadas
Unidad 3 Listas EnlazadasUnidad 3 Listas Enlazadas
Unidad 3 Listas Enlazadas
 
Unidad 3 Listas Enlazadas
Unidad 3 Listas EnlazadasUnidad 3 Listas Enlazadas
Unidad 3 Listas Enlazadas
 
Unidad 3 Listas Enlazadas
Unidad 3 Listas EnlazadasUnidad 3 Listas Enlazadas
Unidad 3 Listas Enlazadas
 
Unidad 3 Listas Enlazadas
Unidad 3 Listas EnlazadasUnidad 3 Listas Enlazadas
Unidad 3 Listas Enlazadas
 
Unidad 3 Listas Enlazadas
Unidad 3 Listas EnlazadasUnidad 3 Listas Enlazadas
Unidad 3 Listas Enlazadas
 

Más de rezzaca

Método Simplex analitico
Método Simplex analiticoMétodo Simplex analitico
Método Simplex analitico
rezzaca
 
Recopilación y Análisis de Documentos.
Recopilación y Análisis de Documentos.Recopilación y Análisis de Documentos.
Recopilación y Análisis de Documentos.rezzaca
 
El cuestionario
El cuestionarioEl cuestionario
El cuestionariorezzaca
 
Unidad 4 Modelos de Procesos del Software
Unidad 4 Modelos de Procesos del SoftwareUnidad 4 Modelos de Procesos del Software
Unidad 4 Modelos de Procesos del Softwarerezzaca
 
Encuadre de Tópicos Selectos de Programación
Encuadre de Tópicos Selectos de ProgramaciónEncuadre de Tópicos Selectos de Programación
Encuadre de Tópicos Selectos de Programación
rezzaca
 
Encuadre de Estructura de Datos
Encuadre de Estructura de DatosEncuadre de Estructura de Datos
Encuadre de Estructura de Datos
rezzaca
 
Encuadre Programación de Sistemas
Encuadre Programación de SistemasEncuadre Programación de Sistemas
Encuadre Programación de Sistemas
rezzaca
 
Cerradura
CerraduraCerradura
Cerradurarezzaca
 
Metodos Constructor Y Destructor
Metodos Constructor Y DestructorMetodos Constructor Y Destructor
Metodos Constructor Y Destructorrezzaca
 
Simetricas Y Transitivas
Simetricas Y TransitivasSimetricas Y Transitivas
Simetricas Y Transitivasrezzaca
 
Recursividad Con C#
Recursividad Con C#Recursividad Con C#
Recursividad Con C#rezzaca
 
U2 2 1 U2 2 2 Conjunto Reflexiba
U2 2 1  U2 2 2  Conjunto ReflexibaU2 2 1  U2 2 2  Conjunto Reflexiba
U2 2 1 U2 2 2 Conjunto Reflexibarezzaca
 
Propiedades De Las Relaciones
Propiedades De Las RelacionesPropiedades De Las Relaciones
Propiedades De Las Relacionesrezzaca
 
Relaciones Introducción
Relaciones IntroducciónRelaciones Introducción
Relaciones Introducciónrezzaca
 
Evaluacion De Expresiones
Evaluacion De ExpresionesEvaluacion De Expresiones
Evaluacion De Expresionesrezzaca
 
Reglas De Inferencia
Reglas De InferenciaReglas De Inferencia
Reglas De Inferenciarezzaca
 
Inducción Matematica
Inducción MatematicaInducción Matematica
Inducción Matematicarezzaca
 
U1.5 Álgebra Declarativa
U1.5 Álgebra DeclarativaU1.5 Álgebra Declarativa
U1.5 Álgebra Declarativarezzaca
 
Cálculo de predicados
Cálculo de predicadosCálculo de predicados
Cálculo de predicadosrezzaca
 
Codigo Inseguro
Codigo InseguroCodigo Inseguro
Codigo Insegurorezzaca
 

Más de rezzaca (20)

Método Simplex analitico
Método Simplex analiticoMétodo Simplex analitico
Método Simplex analitico
 
Recopilación y Análisis de Documentos.
Recopilación y Análisis de Documentos.Recopilación y Análisis de Documentos.
Recopilación y Análisis de Documentos.
 
El cuestionario
El cuestionarioEl cuestionario
El cuestionario
 
Unidad 4 Modelos de Procesos del Software
Unidad 4 Modelos de Procesos del SoftwareUnidad 4 Modelos de Procesos del Software
Unidad 4 Modelos de Procesos del Software
 
Encuadre de Tópicos Selectos de Programación
Encuadre de Tópicos Selectos de ProgramaciónEncuadre de Tópicos Selectos de Programación
Encuadre de Tópicos Selectos de Programación
 
Encuadre de Estructura de Datos
Encuadre de Estructura de DatosEncuadre de Estructura de Datos
Encuadre de Estructura de Datos
 
Encuadre Programación de Sistemas
Encuadre Programación de SistemasEncuadre Programación de Sistemas
Encuadre Programación de Sistemas
 
Cerradura
CerraduraCerradura
Cerradura
 
Metodos Constructor Y Destructor
Metodos Constructor Y DestructorMetodos Constructor Y Destructor
Metodos Constructor Y Destructor
 
Simetricas Y Transitivas
Simetricas Y TransitivasSimetricas Y Transitivas
Simetricas Y Transitivas
 
Recursividad Con C#
Recursividad Con C#Recursividad Con C#
Recursividad Con C#
 
U2 2 1 U2 2 2 Conjunto Reflexiba
U2 2 1  U2 2 2  Conjunto ReflexibaU2 2 1  U2 2 2  Conjunto Reflexiba
U2 2 1 U2 2 2 Conjunto Reflexiba
 
Propiedades De Las Relaciones
Propiedades De Las RelacionesPropiedades De Las Relaciones
Propiedades De Las Relaciones
 
Relaciones Introducción
Relaciones IntroducciónRelaciones Introducción
Relaciones Introducción
 
Evaluacion De Expresiones
Evaluacion De ExpresionesEvaluacion De Expresiones
Evaluacion De Expresiones
 
Reglas De Inferencia
Reglas De InferenciaReglas De Inferencia
Reglas De Inferencia
 
Inducción Matematica
Inducción MatematicaInducción Matematica
Inducción Matematica
 
U1.5 Álgebra Declarativa
U1.5 Álgebra DeclarativaU1.5 Álgebra Declarativa
U1.5 Álgebra Declarativa
 
Cálculo de predicados
Cálculo de predicadosCálculo de predicados
Cálculo de predicados
 
Codigo Inseguro
Codigo InseguroCodigo Inseguro
Codigo Inseguro
 

Listas en C#

  • 1. Listas En Ciencias de la Computación, una lista enlazada es una de las estructuras de datos fundamentales, y puede ser usada para implementar otras estructuras de datos. Consiste en una secuencia de nodos, en los que se guardan campos de datos arbitrarios y una o dos referencias(punteros) al nodo anterior y/o posterior. El principal beneficio de las listas enlazadas respecto a los array convencionales es que el orden de los elementos enlazados puede ser diferente al orden de almacenamiento en la memoria o el disco, permitiendo que el orden de recorrido de la lista sea diferente al de almacenamiento. Una lista enlazada es un tipo de dato auto-referenciado porque contienen un puntero o link a otro dato del mismo tipo. Las listas enlazadas permiten inserciones y eliminación de nodos en cualquier punto de la lista en tiempo constante (suponiendo que dicho punto está previamente identificado o localizado), pero no permiten un acceso aleatorio. Existen diferentes tipos de listas enlazadas: Lista Enlazadas Simples, Listas Doblemente Enlazadas, Listas Enlazadas Circulares y Listas Enlazadas Doblemente Circulares. Las listas enlazadas pueden ser implementadas en muchos lenguajes. Lenguajes tales como Lisp y Scheme tiene estructuras de datos ya construidas, junto con operaciones para acceder a las listas enlazadas. Lenguajes imperativos u orientados a objetos tales como C o C++ yJava, respectivamente, disponen de referencias para crear listas enlazadas. Tipos de Listas Enlazadas  Listas enlazadas lineales  Listas simples enlazadas  La lista enlazada básica es la lista enlazada simple la cual tiene un enlace por nodo. Este enlace apunta al siguiente nodo en la lista, o al valor NULL o a la lista vacía, si es el último nodo. Una lista enlazada simple contiene dos valores: el valor actual del nodo y un enlace al siguiente nodo Lista Doblemente Enlazada  Un tipo de lista enlazada más sofisticado es la lista doblemente enlazada o lista enlazadas de dos vías. Cada nodo tiene dos enlaces: uno apunta al nodo anterior, o apunta al valor NULL si es el primer nodo; y otro que apunta al nodo siguiente, o apunta al valor NULL si es el último nodo. Una lista doblemente enlazada contiene tres valores: el valor, el link al nodo siguiente, y el link al anterior En algún lenguaje de muy bajo nivel, XOR-Linking ofrece una vía para implementar listas doblemente enlazadas, usando una sola palabra para ambos enlaces, aunque el uso de esta técnica no se suele utilizar. Listas enlazadas circulares  En una lista enlazada circular, el primer y el último nodo están unidos juntos. Esto se puede hacer tanto para listas enlazadas simples como para las doblemente enlazadas. Para recorrer una lista enlazada circular podemos empezar por cualquier nodo y seguir la lista en cualquier dirección hasta que se regrese hasta el nodo original. Desde otro punto de vista, las listas enlazadas circulares pueden ser vistas como listas sin comienzo ni fin. Este tipo de listas es el más usado para dirigir buffers para “ingerir” datos, y para visitar todos los nodos de una lista a partir de uno dado. Una lista enlazada circular que contiene tres valores enteros Listas enlazadas circulares simples  Cada nodo tiene un enlace, similar al de las listas enlazadas simples, excepto que el siguiente nodo del último apunta al primero. Como en una lista enlazada simple, los nuevos nodos pueden ser solo eficientemente insertados después de uno que ya tengamos referenciado. Por esta razón, es usual quedarse con una referencia solamente al último elemento en una lista enlazada circular simple, esto nos permite rápidas inserciones al principio, y también permite accesos al primer nodo desde el puntero del último nodo. 1 Lista Enlazada Doblemente Circular  En una lista enlazada doblemente circular, cada nodo tiene dos enlaces, similares a los de la lista doblemente enlazada, excepto que el enlace anterior del primer nodo apunta al último y el enlace siguiente del último nodo, apunta al primero. Como en una lista doblemente enlazada, las inserciones y eliminaciones pueden ser hechas desde cualquier punto con acceso a algún nodo cercano. Aunque estructuralmente una lista circular doblemente enlazada no tiene ni principio ni fin, un puntero de acceso externo puede establecer el nodo apuntado que está en la cabeza o al nodo cola, y así mantener el orden tan bien como en una lista doblemente enlazada. Nodos Centinelas  A veces las listas enlazadas tienen un nodo centinela (también llamado falso nodo o nodo ficticio) al principio y/o al final de la lista, el cual no es usado para guardar datos. Su propósito es simplificar o agilizar algunas operaciones, asegurando que cualquier nodo tiene otro anterior o posterior, y que toda la lista (incluso alguna que no contenga datos) siempre tenga un “primer y último” nodo. La clase LinkedNode en C#. Interfaz Ilist Las listas (List) en C# son colecciones de datos mucho más potentes y funcionales que los arrays, por lo que su uso es muy común en el desarrollo de aplicaciones. Y es que con las listas (List) todo se hace mucho más sencillo. Ahorramos código y disponemos de los métodos que siempre soñamos tener en la clase Array. En este tutorial veremos como crear nuestra propia lista de elementos usando nodos enlazables, así como programar los métodos Add, Insert, Remove, IndexOf, Contains, Clear y otras funciones disponibles en la Interfaz IList. ¿Qué es un nodo enlazable?Un nodo enlazable es una clase que tiene principalmente un valor de tipo object y un enlace hacia el nodo siguiente. ¿Para que sirve?Los nodos enlazables pueden ser utilizados para almacenar los elementos de la lista que queremos crear. De igual manera podríamos usar un array, pero además de ser mucho más costoso, a mí me gustan más los nodos enlazables. Por tanto esta sería la clase Nodo: Ahora que ya tenemos nuestra clase Nodo, crearemos nuestra lista. Una clase a la que llamaremos ListaEnlazable. Como todas, las listas van a tener las mismas funcionalidades, las que heredaremos de una interfaz llamada IList. Para quienes no lo saben, una interfaz es una especie de plantilla, con un conjunto de métodos y propiedades definidas pero no programadas y que las podemos usar en clases y estructuras. Para usar la interfaz Ilist creamos la clase ListaEnlazable y heredamos de la interfaz Ilist que viene por defecto con el Visual Studio. Luego hacemos clic derecho sobre Ilist y seleccionamos Implementar Interfaz (Implement interface): Pues bien, ahora vamos a crear las variables necesarias para programar cada uno de los métodos de la interfaz Ilist. Necesitaremos dos Nodos: primero y último, para poder recorrer la lista, y empezar desde algún lugar. Además podríamos necesitar un contador, que permita saber la cantidad de elementos que hay en un momento dado. Y el constructor por defecto lo único que haría es inicializar las variables, para crear una nueva ListaEnlazable vacía. De esta forma, tendríamos algo como lo siguiente: public void Add(object x) La función de este método es añadir un elemento al final de la lista. Veamos la implementación de Add: Como ven, es muy sencillo, solo hay que crear un nuevo nodo, enlazar el último con este nuevo nodo y luego poner este nodo como último. public void Insert(int index, object x) Añade un elemento a la lista, pero a diferencia de Add(object x), este lo inserta en una posición dada. Como ven, hay que recorrer la lista hasta encontrar la posición donde queremos insertar el elemento. public int IndexOf(object x) Devuelve la posición de un elemento de la lista. Al final, si este método no encuentra el elemento x en la lista, retorna -1, veamos como usar esto en el siguiente método. public bool Contains(object x) Este método nos dice si un elemento está o no en la lista. Devuelve true en caso de que la lista contenga al elemento x y false en caso contrario. La operación es muy simple, pues usamos IndexOf(x) que ya está implementado en esta clase. public void Remove(object x) Método para quitar el elemento x de la lista. Simplemente busca el elemento en la lista y actualiza la propiedad siguiente saltándose el nodo cuyo valor es x. Nos quedan dos métodos que deberás implementar tú mismo, usando los algoritmos que ya hemos visto en la clase ListaEnlazable: public void RemoveAt(int index) Elimina de la lista el elemento que está en la posición index. Public void Clear() Clear no recibe ningún parámetro y su función es reiniciar la lista, o sea vaciarla. Fíjense en el constructor. Public object this [int index] Por último, veamos cómo programar el indexer, una especie de propiedad que permite seleccionar el elemento de la lista especificando una posición, como hacemos con el array, por ejemplo: No se asusten porque el código es un poco largo, fíjense que es casi lo mismo en el get y en el set, la diferencia está en que get es para leer el elemento, y set para cambiarlo.