Lista enlazada con Python - Estructura de datos y operaciones

Lista ligada en Python

En este post te mostraré una lista ligada en Python que después se podría modificar como una cola o pila (ya que se pueden insertar elementos al inicio y al final).

Las operaciones que manejaremos con esta lista enlazada son:

  • Agregar al inicio
  • Agregar al final
  • Saber si elemento existe
  • Eliminar un elemento
  • Obtener cabeza
  • Obtener cola
  • Recorrer lista

Por cierto, vamos a usar ciclos y no recursión para las operaciones. De esta manera el código queda más simple.

(más…)

Cola en C - Programación de estructuras de datos con listas

Cola en C – Estructura de datos

En este post vamos a implementar una estructura de datos en C de tipo lista ligada.

Se trata de una cola, que a su vez es una lista en donde iremos colocando los elementos al final de la misma, contrario a una pila en donde cada elemento va a la parte superior.

Hay varias operaciones para una cola en C, pero por ahora te mostraré las 2 básicas: la de encolar un elemento y la de recorrer la cola.

Con esos dos métodos ya puedes calcular el tamaño de la lista, comprobar si un elemento existe en la cola y muchas cosas más.

Recuerda que la cola en C puede ser de cualquier tipo y guardar cualquier cantidad de datos de cualquier tipo. Al final nosotros le asignamos memoria dinámicamente con malloc.

(más…)

Programación Java - Ingresar palabra letra por letra en Árbol binario

Java: ingresar palabra en árbol binario

Hoy vamos a resolver un ejercicio de Java. Se trata de solicitar una palabra y almacenarla en un árbol binario de búsqueda o ABB. El mismo dice así:

  • Diseñar un programa en Java que ingrese una palabra mínima de 10 caracteres (se debe realizar la verificación de que no acepte frases), proceda a
    separar carácter a carácter y guardarlos en un ABB
  • Recuerde que la primera letra será la Raíz.
  • Es importante indicar que todo debe ser ejecutado en consola.
  • El programa debe tener mínimo las siguientes opciones: Ingresar, Visualizar (pre-orden, post-orden e in-orden) y Finalizar.
  • El programa debe tener al menos 3 clases.

(más…)

Ejercicio en C++ con archivo CSV, listas ligadas y disponibilidad de camas

En este post te mostraré la solución a un ejercicio en C++ que tiene que ver con archivos CSV y disponibilidad de camas en hospitales.

Básicamente es leer un archivo CSV, pasarlo a la lista enlazada (estructura de datos) y luego generar estadísticas, eliminar repetidos, eliminar un registro y borrarlo.

Nos vamos a basar ampliamente en dos tutoriales que ya he publicado en mi blog: leer archivos CSV con C++ y listas enlazadas en C++.

(más…)

Lista ligada en C++ - Programación y estructura de datos

Lista ligada en C++

Hoy te enseñaré cómo implementar una lista ligada en el lenguaje de programación C++ también conocido como CPP.

Además de mostrarte la clase Lista y la clase Nodo, te enseñaré las operaciones que podemos realizar con ella. Son las siguientes:

  • Recorrer la lista imprimiendo los valores
  • Verificar si un elemento existe dentro de la lista
  • Eliminar un elemento de la lista ligada en C++
  • Crear una nueva lista sin elementos repetidos (eliminar duplicados)

Todo esto usando C++ e implementando los métodos y algoritmos manualmente. Por cierto, en este caso el tipo de dato que vamos a almacenar será un int pero fácilmente puedes cambiarlo a cualquier otro tipo de dato.

(más…)

Árbol binario en Python - Estructura de datos

Árbol binario en Python

En este post vamos a implementar la estructura de datos Árbol binario en Python, además de implementar la declaración de un Nodo o rama.

También veremos cómo agregar al nodo sus partes izquierda y derecha, el método para agregar un valor de manera recursiva (y acomodarlo de acuerdo a la raíz) al árbol, recorrido inorden, postorden y preorden, así como la búsqueda de determinado valor en el árbol.

Básicamente implementaremos un árbol en Python con los métodos más comunes. Recuerda que los árboles binarios son una estructura de datos bastante interesante en donde la búsqueda de un elemento se hace de manera rápida por la naturaleza del mismo.

(más…)

Árbol binario en C con nodo de tipo cadena

C – Árbol binario de cadenas

En este post te mostraré cómo implementar la estructura de datos de árbol binario en ANSI C en donde el dato de cada nodo o rama será una cadena.

Te enseñaré cómo agregar un struct de nodo de árbol cuyo dato es char*, elegir si el nodo va a la izquierda o derecha (comparando cadenas) , recorrer el árbol en preorden, inorden y postorden y también hacer una búsqueda en el mismo.

Me estoy basando en el tutorial de árboles binarios en C que presenté anteriormente, solo que en aquel entonces fue con un tipo de dato entero, ahora lo haré con strings.

Nota: nodo y rama serán usados como sinónimos a lo largo de este post.

(más…)

Árbol binario en Java

Hoy toca ver una estructura de datos en Java: el árbol binario. Vamos a crear una clase para gestionar un árbol binario que tendrá las siguientes características:

  1. Insertar datos (de manera balanceada)
  2. Buscar datos
  3. Recorrer en preorden, inorden y postorden

Además de eso, nuestro árbol tendrá soporte para datos de tipo String y de tipo int, por lo que podremos almacenar, buscar y mostrar datos tanto de cadena como de tipo entero.

(más…)

Árbol binario en C - struct nodo

Árbol binario en C – Inserción y recorrido

Resumen: implementar la estructura de datos de árbol, árbol binario, binary tree o simplemente tree en C y mostrar operaciones para:

  • Insertar un nuevo elemento u hoja
  • Recorridos inorden, postorden y preorden

Vamos a usar recursividad para algunas operaciones. Al insertar elementos vamos a compararlos para insertarlos a la izquierda si son menores que el nodo padre, o a la derecha en caso contrario.

(más…)

Pila dinámica en C

Implementación de una pila dinámica en C

Pila o stack dinámica en el lenguaje C

Una pila es una estructura de datos simple. Los datos se van apilando uno tras otro. Podemos abstraer cada elemento como un nodo que puede apuntar a otro nodo.

Su modo de acceso es LIFO: el último en entrar es el primero en salir. Las operaciones que tiene son 2: push y pop; la primera le pone un elemento y la segunda quita el último.

Pila dinámica en C

Pila dinámica en C

Veremos las operaciones básicas de una pila o stack en C; además de otras que hice para exponer aquí. Son:

  • Tamaño: devolver el tamaño de la pila
  • Apilar, también conocido como push: agregar un elemento
  • Desapilar, o la operación pop: quitar el último elemento; es decir, el elemento superior
  • Leer último: leer el elemento superior de la pila
  • Vacía: indica si la pila está vacía
  • Imprimir: recorrer la pila e imprimir sus valores

Por cierto, esta pila será dinámica: podremos poner elementos infinitos siempre y cuando nuestra memoria RAM alcance (cosa que es muy, muy difícil que ocurra)

Nota: esto será un tipo de lista ligada, así como la cola.

(más…)