1. Tipos de Datos Abstractos

#estructuraDeDatos #universidad

a. Definición de estructuras de datos

Estructuras de datos son formas de organizar y almacenar datos de manera que se puedan utilizar de manera eficiente. Permiten gestionar y manipular datos de acuerdo con las necesidades específicas de una aplicación.

i. Estructuras de datos estáticas

ii. Estructuras de datos dinámicas

b. Introducción a los tipos de datos abstractos (TDA)

Tipos de Datos Abstractos (TDA) son modelos matemáticos para tipos de datos, donde se define su comportamiento desde el punto de vista del usuario, sin especificar cómo se implementan internamente.

i. Definición de tipos de datos abstractos

Un TDA especifica:

ii. Aplicaciones de los tipos de datos abstractos

Ejemplos de TDA:


Ejemplos Prácticos

Ejemplo 1: Implementación de una pila utilizando un arreglo (Estructura estática)

#define MAX 100
typedef struct {
    int datos[MAX];
    int cima;
} Pila;

void inicializarPila(Pila *p) {
    p->cima = -1;
}

int estaVacia(Pila *p) {
    return p->cima == -1;
}

int estaLlena(Pila *p) {
    return p->cima == MAX - 1;
}

void apilar(Pila *p, int elemento) {
    if (!estaLlena(p)) {
        p->datos[++(p->cima)] = elemento;
    }
}

int desapilar(Pila *p) {
    if (!estaVacia(p)) {
        return p->datos[(p->cima)--];
    }
    return -1; // Indicador de error
}

Ejemplo 2: Implementación de una lista enlazada simple (Estructura dinámica)

typedef struct Nodo {
    int dato;
    struct Nodo *siguiente;
} Nodo;

Nodo* crearNodo(int valor) {
    Nodo *nuevo = (Nodo*)malloc(sizeof(Nodo));
    nuevo->dato = valor;
    nuevo->siguiente = NULL;
    return nuevo;
}

void insertarInicio(Nodo **cabeza, int valor) {
    Nodo *nuevo = crearNodo(valor);
    nuevo->siguiente = *cabeza;
    *cabeza = nuevo;
}


Ejercicios

  1. Definición de TDA:

    • Define qué es un TDA y da tres ejemplos diferentes de TDA que no se hayan mencionado anteriormente.
  2. Implementación de una cola:

    • Implementa una cola (FIFO) utilizando una lista enlazada en el lenguaje de programación de tu preferencia. Incluye operaciones de encolar, desencolar y verificar si está vacía.
  3. Comparación de estructuras:

    • Explica las ventajas y desventajas de utilizar una estructura de datos estática frente a una dinámica en el contexto de una aplicación que maneja una cantidad variable de usuarios.