SlideShare una empresa de Scribd logo
1 de 22
Estructura de Datos


• Luis Humeau
    11-1155
• Waldi Saturno
    12-0412
Pilas
 Una pila es una método de estructuración datos
usando la forma LIFO (último en entrar, primero en
 salir), que permite almacenar y recuperar datos.
Operaciones de las Pilas
    Las operaciones que se pueden realizar con una
    pila son:
            • PUSH (pila, elemento):
        Introduce un elemento en la pila. También se
        le conoce como poner o meter.

           • POP (pila):
            Elimina un elemento de la pila. También
           se le conoce como sacar o quitar.

           • VACIA(pila):
            Función booleana que indica si la pila esta
           vacía o no.
Ejemplo
Ejemplo 2 Java
import java.util.*;
/**
 *
 * @author Tecnologia
 */
public class PILA {
   public static void main(String[] args) {
   Stack<String> pila = new Stack<String>();
     for (int x=1;x <= 1000;x++)
     pila.push(Integer.toString(x));
     while (!pila.empty())
        System.out.println(pila.pop());
   }
}
COLAS

        Una cola es una estructura de
        datos, caracterizada por ser
        una secuencia de elementos
        en la que la operación de
        inserción push se realiza por
        un extremo y la operación de
        extracción pop por el otro.

        También se le llama estructura
        FIFO (del inglés First In First
        Out), debido a que el primer
        elemento en entrar será
        también el primero en salir.
Ejemplos

• Cola de automoviles esperando servicio en
  una gasolinera.
• Cola de clientes en una ventanilla del banco
  para pagar un servicio.
• Cola de programas en espera de ser
  ejecutados por una computadora.
Tipos de Colas
• Cola Simple:
  Estructura lineal donde los elementos salen en el mismo orden en
  que llegan.

• Cola circular :
  Representación lógica de una cola simple en un arreglo.

• Cola de Prioridades:
  Estructura lineal en la cual los elementos se insertan en cualquier
  posición de la cola y se remueven solamente por el frente.

• Cola Doble (Bicola) :
  Estructura lineal en la que los elementos se pueden añadir o quitar
  por cualquier extremo de la cola (Cola bidireccional).
Operaciones
1.- Insertar A

2.- Insertar B

3-.Insertar C

4-.Remover Elemento

5-. Insertar D

6.- Remover Elemento
Operaciones básicas en Colas Simples
• Insertar.- Almacena al final de la cola el elemento que
  se recibe como parámetro.
• Eliminar.- Saca de la cola el elemento que se encuentra
  al frente.
• Vacía.- Regresa un valor booleano indicando si la cola
  tiene o no elementos (true – si la cola esta vacía, false
  – si la cola tiene al menos un elemento).
• Llena.- Regresa un valor booleano indicando si la cola
  tiene espacio disponible para insertar nuevos
  elementos ( true – si esta llena y false si existen
  espacios disponibles).
Colas-Utilización
      Las colas se utilizan en sistemas informáticos,
      transportes y operaciones de investigación
      (entre otros), dónde los objetos, personas o
      eventos son tomados como datos que se
      almacenan y se guardan mediante colas para
      su posterior procesamiento. Este tipo de
      estructura de datos abstracta se implementa
      en lenguajes orientados a objetos mediante
      clases, en forma de listas enlazadas.

      Una cola es una estructura de datos,
      caracterizada por ser una secuencia de
      elementos en la que la operación de inserción
      push se realiza por un extremo y la operación
      de extracción pop por el otro. También se le
      llama estructura FIFO (del inglés First In First
      Out), debido a que el primer elemento en
      entrar será también el primero en salir.
Operaciones Básicas
• Crear:
   – se crea la cola vacía.
• Encolar (añadir, entrar, insertar):
   – se añade un elemento a la cola. Se añade al final de esta.
• Desencolar (sacar, salir, eliminar):
   – se elimina el elemento frontal de la cola, es decir, el primer elemento
     que entró.
• Frente (consultar, front):
   – se devuelve el elemento frontal de la cola, es decir, el primer
     elemento que entró.
Colas-JAVA
Lista
• 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
  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.
Lista (estructura de datos)
• 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.
Lista
• 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++ y
  Java, respectivamente, disponen de
  referencias para crear listas enlazadas.
Operaciones basicas de una lista.
•   Recorrer los elementos hacia adelante
•   Recorrer los elementos hacia atras
•   Insertar un nuevo elemento al principio
•   Insertar un nuevo elemento al final
•   Insertar un nuevo elemento antes de otro
•   Insertar un nuevo elemento despues de otro
•   Remover un elemento del principio
•   Remover un elemento que esta antes que otro
•   Remover un elemento que esta despues de otro
•   Remover un elemento del principio
•   Remover un elemento del final
Implementación de una lista enlazada en
                      C
•   #include <stdio.h> /* for printf */
•   #include <stdlib.h> /* for malloc */
•
•   typedef struct ns {
•       int data;
•       struct ns *next;
•   } node;
•
•   node *list_add(node **p, int i) {
•     /* algunos compiladores no requieren un casting del valor del retorno para malloc */
•     node *n = (node *)malloc(sizeof(node));
•     if (n == NULL)
•         return NULL;
•     n->next = *p;
•     *p = n;
•     n->data = i;
Implementación de una lista enlazada en
                      C
•       return n;
•   }
•
•   void list_remove(node **p) { /* borrar cabeza*/
•     if (*p != NULL) {
•         node *n = *p;
•         *p = (*p)->next;
•         free(n);
•     }
•   }
•
•   node **list_search(node **n, int i) {
•     while (*n != NULL) {
•       if ((*n)->data == i) {
•          return n;
•       }
Implementación de una lista enlazada en
                      C
•         n = &(*n)->next;
•       }
•       return NULL;
•   }
•
•   void list_print(node *n) {
•     if (n == NULL) {
•         printf("lista esta vacían");
•     }
•     while (n != NULL) {
•         printf("print %p %p %dn", n, n->next, n->data);
•         n = n->next;
•     }
•   }
•
•   int main(void) {
Implementación de una lista enlazada en
                      C
•       node *n = NULL;
•
•       list_add(&n, 0); /* lista: 0 */
•       list_add(&n, 1); /* lista: 1 0 */
•       list_add(&n, 2); /* lista: 2 1 0 */
•       list_add(&n, 3); /* lista: 3 2 1 0 */
•       list_add(&n, 4); /* lista: 4 3 2 1 0 */
•       list_print(n);
•       list_remove(&n);          /* borrar primero(4) */
•       list_remove(&n->next); /* borrar nuevo segundo (2) */
•       list_remove(list_search(&n, 1)); /* eliminar la celda que contiene el 1 (primera) */
•       list_remove(&n->next); /* eliminar segundo nodo del final(0)*/
•       list_remove(&n);          /* eliminar ultimo nodo (3) */
•       list_print(n);
•
•       return 0;
•   }
Fuente

1.   http://es.kioskea.net/faq/2885-las-pilas-en-lenguaje-c
2. http://estructura-de-datos-garo.blogspot.com/2011/10/colas-informatica.html
3. http://www.slideshare.net/dma1991/colas-informaticas
4. http://www.madsgroup.org/docencia/alg/pilas_colas_listas.pdf

Más contenido relacionado

La actualidad más candente

Estructura de Datos - Unidad 4 Estructuras no lineales
Estructura de Datos - Unidad 4 Estructuras no linealesEstructura de Datos - Unidad 4 Estructuras no lineales
Estructura de Datos - Unidad 4 Estructuras no linealesJosé Antonio Sandoval Acosta
 
Arboles mate discreta
Arboles mate discretaArboles mate discreta
Arboles mate discretaJunior Soto
 
Listas como estructura de datos..
Listas como estructura de datos..Listas como estructura de datos..
Listas como estructura de datos..NANO-06
 
Programación Orientada a Objetos - atributos y métodos
Programación Orientada a Objetos - atributos y métodosProgramación Orientada a Objetos - atributos y métodos
Programación Orientada a Objetos - atributos y métodosAlvaro Enrique Ruano
 
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
 
Método de ordenación por inserción directa
Método de ordenación por inserción directaMétodo de ordenación por inserción directa
Método de ordenación por inserción directatavo_3315_
 
POO: Encapsulamiento, principio de ocultación, recolección de basura
POO: Encapsulamiento, principio de ocultación, recolección de basuraPOO: Encapsulamiento, principio de ocultación, recolección de basura
POO: Encapsulamiento, principio de ocultación, recolección de basura1da4
 
Programación 3: Grafos, representación y operaciones
Programación 3: Grafos, representación y operacionesProgramación 3: Grafos, representación y operaciones
Programación 3: Grafos, representación y operacionesAngel Vázquez Patiño
 
Reporte metodos de busqueda y ordenamiento
Reporte metodos de busqueda y ordenamientoReporte metodos de busqueda y ordenamiento
Reporte metodos de busqueda y ordenamientoTAtiizz Villalobos
 
Listas, pilas y colas
Listas, pilas y colasListas, pilas y colas
Listas, pilas y colasknowallrpa
 
Tipos de Modelos de Datos : Ventajas y Desventajas
Tipos de Modelos de Datos : Ventajas y DesventajasTipos de Modelos de Datos : Ventajas y Desventajas
Tipos de Modelos de Datos : Ventajas y DesventajasJuanMiguelCustodioMo
 
Métodos de ordenación externa
Métodos de ordenación externaMétodos de ordenación externa
Métodos de ordenación externaEdwin Narváez
 

La actualidad más candente (20)

Estructura de Datos - Unidad 4 Estructuras no lineales
Estructura de Datos - Unidad 4 Estructuras no linealesEstructura de Datos - Unidad 4 Estructuras no lineales
Estructura de Datos - Unidad 4 Estructuras no lineales
 
Listas
ListasListas
Listas
 
Arboles mate discreta
Arboles mate discretaArboles mate discreta
Arboles mate discreta
 
Listas como estructura de datos..
Listas como estructura de datos..Listas como estructura de datos..
Listas como estructura de datos..
 
Programación Orientada a Objetos - atributos y métodos
Programación Orientada a Objetos - atributos y métodosProgramación Orientada a Objetos - atributos y métodos
Programación Orientada a Objetos - atributos y métodos
 
Búsqueda secuencial y binaria
Búsqueda secuencial y binariaBúsqueda secuencial y binaria
Búsqueda secuencial y binaria
 
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
 
Método de ordenación por inserción directa
Método de ordenación por inserción directaMétodo de ordenación por inserción directa
Método de ordenación por inserción directa
 
POO: Encapsulamiento, principio de ocultación, recolección de basura
POO: Encapsulamiento, principio de ocultación, recolección de basuraPOO: Encapsulamiento, principio de ocultación, recolección de basura
POO: Encapsulamiento, principio de ocultación, recolección de basura
 
Programación 3: Grafos, representación y operaciones
Programación 3: Grafos, representación y operacionesProgramación 3: Grafos, representación y operaciones
Programación 3: Grafos, representación y operaciones
 
Arboles M-Way, 2-3 y 2-3-4
Arboles M-Way, 2-3 y 2-3-4Arboles M-Way, 2-3 y 2-3-4
Arboles M-Way, 2-3 y 2-3-4
 
Ordenamiento por insercion
Ordenamiento por insercionOrdenamiento por insercion
Ordenamiento por insercion
 
Reporte metodos de busqueda y ordenamiento
Reporte metodos de busqueda y ordenamientoReporte metodos de busqueda y ordenamiento
Reporte metodos de busqueda y ordenamiento
 
Listas, pilas y colas
Listas, pilas y colasListas, pilas y colas
Listas, pilas y colas
 
Aplicaciones de los árboles y grafos
Aplicaciones de los árboles y grafosAplicaciones de los árboles y grafos
Aplicaciones de los árboles y grafos
 
Tipos de Modelos de Datos : Ventajas y Desventajas
Tipos de Modelos de Datos : Ventajas y DesventajasTipos de Modelos de Datos : Ventajas y Desventajas
Tipos de Modelos de Datos : Ventajas y Desventajas
 
Métodos de ordenación externa
Métodos de ordenación externaMétodos de ordenación externa
Métodos de ordenación externa
 
Recursividad
RecursividadRecursividad
Recursividad
 
Programación 3: listas enlazadas
Programación 3: listas enlazadasProgramación 3: listas enlazadas
Programación 3: listas enlazadas
 
Presentacion pilas lista y colas
Presentacion pilas lista y colas  Presentacion pilas lista y colas
Presentacion pilas lista y colas
 

Destacado

Destacado (12)

Estructura datos pilas y colas
Estructura datos pilas y colasEstructura datos pilas y colas
Estructura datos pilas y colas
 
Java colecciones
Java coleccionesJava colecciones
Java colecciones
 
Estructura de datos listas, pilas y colas
Estructura de datos listas, pilas y colasEstructura de datos listas, pilas y colas
Estructura de datos listas, pilas y colas
 
Arboles de expresion
Arboles de expresionArboles de expresion
Arboles de expresion
 
Java pilas (Stacks) y colas (Queues)
Java pilas (Stacks) y colas (Queues)Java pilas (Stacks) y colas (Queues)
Java pilas (Stacks) y colas (Queues)
 
Estructura de datos I pilas
Estructura de datos I pilasEstructura de datos I pilas
Estructura de datos I pilas
 
Colas informaticas
Colas informaticasColas informaticas
Colas informaticas
 
Dev c++ en oo
Dev c++ en ooDev c++ en oo
Dev c++ en oo
 
Lista, pilas y colas
Lista, pilas y colasLista, pilas y colas
Lista, pilas y colas
 
colecciones en java
colecciones en javacolecciones en java
colecciones en java
 
Colecciones en Java
Colecciones en JavaColecciones en Java
Colecciones en Java
 
Java - Sintaxis Básica 2015
Java - Sintaxis Básica 2015Java - Sintaxis Básica 2015
Java - Sintaxis Básica 2015
 

Similar a Pilas, colas, y listas estructura de datos

Estructura de datos
Estructura de datosEstructura de datos
Estructura de datoscharlezgt
 
Sesion n°1 estructura de datos
Sesion n°1 estructura de datosSesion n°1 estructura de datos
Sesion n°1 estructura de datosJosé Braganza
 
Listas pilascolas edward.mejia-10-1314
Listas pilascolas edward.mejia-10-1314Listas pilascolas edward.mejia-10-1314
Listas pilascolas edward.mejia-10-1314Edward Mejia Gomez
 
Listas, pilas y colas
Listas, pilas y colasListas, pilas y colas
Listas, pilas y colasElbery
 
Listas, pilas y colas richard ramos 09-1130
Listas, pilas y colas   richard ramos 09-1130Listas, pilas y colas   richard ramos 09-1130
Listas, pilas y colas richard ramos 09-1130reyarturo16
 
ED Listas, Pilas y Colas
ED Listas, Pilas y ColasED Listas, Pilas y Colas
ED Listas, Pilas y Colasiventura26
 
Estructuradatospilasycolas 121106170754-phpapp02
Estructuradatospilasycolas 121106170754-phpapp02Estructuradatospilasycolas 121106170754-phpapp02
Estructuradatospilasycolas 121106170754-phpapp02Z Karina Hernandez A
 
Listas, pilas & colas
Listas, pilas & colasListas, pilas & colas
Listas, pilas & colasjorgeluis0317
 
Listas pilas colas_carlos_rosario10-1337
Listas pilas colas_carlos_rosario10-1337Listas pilas colas_carlos_rosario10-1337
Listas pilas colas_carlos_rosario10-1337CJrosario2
 
Estructura de datos.vrb
Estructura de datos.vrbEstructura de datos.vrb
Estructura de datos.vrbviela6
 
Estructura de datos.vrb
Estructura de datos.vrbEstructura de datos.vrb
Estructura de datos.vrbviela6
 
Estructura de datos.vrb
Estructura de datos.vrbEstructura de datos.vrb
Estructura de datos.vrbviela6
 

Similar a Pilas, colas, y listas estructura de datos (20)

Estructura de datos
Estructura de datosEstructura de datos
Estructura de datos
 
Listas, pilas y colas
Listas, pilas y colasListas, pilas y colas
Listas, pilas y colas
 
Listas, pilas y colas
Listas, pilas y colasListas, pilas y colas
Listas, pilas y colas
 
Sesion n°1 estructura de datos
Sesion n°1 estructura de datosSesion n°1 estructura de datos
Sesion n°1 estructura de datos
 
Datos
DatosDatos
Datos
 
Listas pilascolas edward.mejia-10-1314
Listas pilascolas edward.mejia-10-1314Listas pilascolas edward.mejia-10-1314
Listas pilascolas edward.mejia-10-1314
 
Pilas y colas
Pilas y colasPilas y colas
Pilas y colas
 
Listas, pilas y colas
Listas, pilas y colasListas, pilas y colas
Listas, pilas y colas
 
Listas Pilas Colas
Listas Pilas ColasListas Pilas Colas
Listas Pilas Colas
 
Listas, pilas y colas richard ramos 09-1130
Listas, pilas y colas   richard ramos 09-1130Listas, pilas y colas   richard ramos 09-1130
Listas, pilas y colas richard ramos 09-1130
 
ED Listas, Pilas y Colas
ED Listas, Pilas y ColasED Listas, Pilas y Colas
ED Listas, Pilas y Colas
 
Pilas Colas
Pilas ColasPilas Colas
Pilas Colas
 
Python Pilas y Colas
Python Pilas y ColasPython Pilas y Colas
Python Pilas y Colas
 
Estructuradatospilasycolas 121106170754-phpapp02
Estructuradatospilasycolas 121106170754-phpapp02Estructuradatospilasycolas 121106170754-phpapp02
Estructuradatospilasycolas 121106170754-phpapp02
 
Estructura de datos pilas y colas
Estructura de datos pilas y colasEstructura de datos pilas y colas
Estructura de datos pilas y colas
 
Listas, pilas & colas
Listas, pilas & colasListas, pilas & colas
Listas, pilas & colas
 
Listas pilas colas_carlos_rosario10-1337
Listas pilas colas_carlos_rosario10-1337Listas pilas colas_carlos_rosario10-1337
Listas pilas colas_carlos_rosario10-1337
 
Estructura de datos.vrb
Estructura de datos.vrbEstructura de datos.vrb
Estructura de datos.vrb
 
Estructura de datos.vrb
Estructura de datos.vrbEstructura de datos.vrb
Estructura de datos.vrb
 
Estructura de datos.vrb
Estructura de datos.vrbEstructura de datos.vrb
Estructura de datos.vrb
 

Pilas, colas, y listas estructura de datos

  • 1. Estructura de Datos • Luis Humeau 11-1155 • Waldi Saturno 12-0412
  • 2. Pilas Una pila es una método de estructuración datos usando la forma LIFO (último en entrar, primero en salir), que permite almacenar y recuperar datos.
  • 3. Operaciones de las Pilas Las operaciones que se pueden realizar con una pila son: • PUSH (pila, elemento): Introduce un elemento en la pila. También se le conoce como poner o meter. • POP (pila): Elimina un elemento de la pila. También se le conoce como sacar o quitar. • VACIA(pila): Función booleana que indica si la pila esta vacía o no.
  • 5. Ejemplo 2 Java import java.util.*; /** * * @author Tecnologia */ public class PILA { public static void main(String[] args) { Stack<String> pila = new Stack<String>(); for (int x=1;x <= 1000;x++) pila.push(Integer.toString(x)); while (!pila.empty()) System.out.println(pila.pop()); } }
  • 6. COLAS Una cola es una estructura de datos, caracterizada por ser una secuencia de elementos en la que la operación de inserción push se realiza por un extremo y la operación de extracción pop por el otro. También se le llama estructura FIFO (del inglés First In First Out), debido a que el primer elemento en entrar será también el primero en salir.
  • 7. Ejemplos • Cola de automoviles esperando servicio en una gasolinera. • Cola de clientes en una ventanilla del banco para pagar un servicio. • Cola de programas en espera de ser ejecutados por una computadora.
  • 8. Tipos de Colas • Cola Simple: Estructura lineal donde los elementos salen en el mismo orden en que llegan. • Cola circular : Representación lógica de una cola simple en un arreglo. • Cola de Prioridades: Estructura lineal en la cual los elementos se insertan en cualquier posición de la cola y se remueven solamente por el frente. • Cola Doble (Bicola) : Estructura lineal en la que los elementos se pueden añadir o quitar por cualquier extremo de la cola (Cola bidireccional).
  • 9. Operaciones 1.- Insertar A 2.- Insertar B 3-.Insertar C 4-.Remover Elemento 5-. Insertar D 6.- Remover Elemento
  • 10. Operaciones básicas en Colas Simples • Insertar.- Almacena al final de la cola el elemento que se recibe como parámetro. • Eliminar.- Saca de la cola el elemento que se encuentra al frente. • Vacía.- Regresa un valor booleano indicando si la cola tiene o no elementos (true – si la cola esta vacía, false – si la cola tiene al menos un elemento). • Llena.- Regresa un valor booleano indicando si la cola tiene espacio disponible para insertar nuevos elementos ( true – si esta llena y false si existen espacios disponibles).
  • 11. Colas-Utilización Las colas se utilizan en sistemas informáticos, transportes y operaciones de investigación (entre otros), dónde los objetos, personas o eventos son tomados como datos que se almacenan y se guardan mediante colas para su posterior procesamiento. Este tipo de estructura de datos abstracta se implementa en lenguajes orientados a objetos mediante clases, en forma de listas enlazadas. Una cola es una estructura de datos, caracterizada por ser una secuencia de elementos en la que la operación de inserción push se realiza por un extremo y la operación de extracción pop por el otro. También se le llama estructura FIFO (del inglés First In First Out), debido a que el primer elemento en entrar será también el primero en salir.
  • 12. Operaciones Básicas • Crear: – se crea la cola vacía. • Encolar (añadir, entrar, insertar): – se añade un elemento a la cola. Se añade al final de esta. • Desencolar (sacar, salir, eliminar): – se elimina el elemento frontal de la cola, es decir, el primer elemento que entró. • Frente (consultar, front): – se devuelve el elemento frontal de la cola, es decir, el primer elemento que entró.
  • 14. Lista • 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 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.
  • 15. Lista (estructura de datos) • 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.
  • 16. Lista • 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++ y Java, respectivamente, disponen de referencias para crear listas enlazadas.
  • 17. Operaciones basicas de una lista. • Recorrer los elementos hacia adelante • Recorrer los elementos hacia atras • Insertar un nuevo elemento al principio • Insertar un nuevo elemento al final • Insertar un nuevo elemento antes de otro • Insertar un nuevo elemento despues de otro • Remover un elemento del principio • Remover un elemento que esta antes que otro • Remover un elemento que esta despues de otro • Remover un elemento del principio • Remover un elemento del final
  • 18. Implementación de una lista enlazada en C • #include <stdio.h> /* for printf */ • #include <stdlib.h> /* for malloc */ • • typedef struct ns { • int data; • struct ns *next; • } node; • • node *list_add(node **p, int i) { • /* algunos compiladores no requieren un casting del valor del retorno para malloc */ • node *n = (node *)malloc(sizeof(node)); • if (n == NULL) • return NULL; • n->next = *p; • *p = n; • n->data = i;
  • 19. Implementación de una lista enlazada en C • return n; • } • • void list_remove(node **p) { /* borrar cabeza*/ • if (*p != NULL) { • node *n = *p; • *p = (*p)->next; • free(n); • } • } • • node **list_search(node **n, int i) { • while (*n != NULL) { • if ((*n)->data == i) { • return n; • }
  • 20. Implementación de una lista enlazada en C • n = &(*n)->next; • } • return NULL; • } • • void list_print(node *n) { • if (n == NULL) { • printf("lista esta vacían"); • } • while (n != NULL) { • printf("print %p %p %dn", n, n->next, n->data); • n = n->next; • } • } • • int main(void) {
  • 21. Implementación de una lista enlazada en C • node *n = NULL; • • list_add(&n, 0); /* lista: 0 */ • list_add(&n, 1); /* lista: 1 0 */ • list_add(&n, 2); /* lista: 2 1 0 */ • list_add(&n, 3); /* lista: 3 2 1 0 */ • list_add(&n, 4); /* lista: 4 3 2 1 0 */ • list_print(n); • list_remove(&n); /* borrar primero(4) */ • list_remove(&n->next); /* borrar nuevo segundo (2) */ • list_remove(list_search(&n, 1)); /* eliminar la celda que contiene el 1 (primera) */ • list_remove(&n->next); /* eliminar segundo nodo del final(0)*/ • list_remove(&n); /* eliminar ultimo nodo (3) */ • list_print(n); • • return 0; • }
  • 22. Fuente 1. http://es.kioskea.net/faq/2885-las-pilas-en-lenguaje-c 2. http://estructura-de-datos-garo.blogspot.com/2011/10/colas-informatica.html 3. http://www.slideshare.net/dma1991/colas-informaticas 4. http://www.madsgroup.org/docencia/alg/pilas_colas_listas.pdf