Tipos de datos abstractos

En este artículo, aprenderemos sobre ADT, pero antes de comprender qué es ADT, consideremos los diferentes tipos de datos incorporados que se nos proporcionan. Los tipos de datos como int, float, double, long, etc. se consideran tipos de datos incorporados y podemos realizar operaciones básicas con ellos, como suma, resta, división, multiplicación, etc. Ahora puede haber una situación en la que necesitamos operaciones para nuestro tipo de datos definido por el usuario que deben definirse. Estas operaciones se pueden definir solo como y cuando las requerimos. Entonces, para simplificar el proceso de resolución de problemas, podemos crear estructuras de datos junto con sus operaciones, y dichas estructuras de datos que no están integradas se conocen como tipos de datos abstractos (ADT).

El tipo de datos abstractos (ADT) es un tipo (o clase) para objetos cuyo comportamiento está definido por un conjunto de valores y un conjunto de operaciones. La definición de ADT solo menciona qué operaciones se realizarán, pero no cómo se implementarán estas operaciones. No especifica cómo se organizarán los datos en la memoria y qué algoritmos se utilizarán para implementar las operaciones. Se llama «abstracto» porque ofrece una vista independiente de la implementación. 

El proceso de proporcionar solo lo esencial y ocultar los detalles se conoce como abstracción. 

El usuario del tipo de datos no necesita saber cómo se implementa ese tipo de datos, por ejemplo, hemos estado usando valores primitivos como tipos de datos int, float, char solo con el conocimiento de que estos tipos de datos pueden operar y ejecutarse sin ninguna idea de cómo se implementan. 

Entonces, un usuario solo necesita saber qué puede hacer un tipo de datos, pero no cómo se implementará. Piense en ADT como una caja negra que oculta la estructura interna y el diseño del tipo de datos. Ahora definiremos tres ADT, a saber , List ADT, Stack ADT, Queue ADT.

  1. lista ADT
    • Los datos generalmente se almacenan en secuencia de teclas en una lista que tiene una estructura principal que consta de conteo , punteros y la dirección de la función de comparación necesaria para comparar los datos en la lista.
    • El Node de datos contiene el puntero a una estructura de datos y un puntero autorreferencial que apunta al siguiente Node de la lista.
    • La lista de funciones ADT se proporciona a continuación:
    • get(): devuelve un elemento de la lista en cualquier posición dada.
    • insert(): inserta un elemento en cualquier posición de la lista.
    • remove(): elimina la primera aparición de cualquier elemento de una lista no vacía.
    • removeAt(): elimina el elemento en una ubicación específica de una lista no vacía.
    • replace(): reemplaza un elemento en cualquier posición por otro elemento.
    • size(): devuelve el número de elementos de la lista.
    • isEmpty(): devuelve verdadero si la lista está vacía; de lo contrario, devuelve falso.
    • isFull(): devuelve verdadero si la lista está llena; de lo contrario, devuelve falso.
  2. TAD de pila
    • En la implementación de Stack ADT, en lugar de que los datos se almacenen en cada Node, se almacena el puntero a los datos.
    • El programa asigna memoria para los datos y la dirección se pasa a la pila ADT.
    • El Node principal y los Nodes de datos están encapsulados en el ADT. La función de llamada solo puede ver el puntero a la pila.
    • La estructura principal de la pila también contiene un puntero a la parte superior y un recuento del número de entradas actualmente en la pila.
    • push(): inserta un elemento en un extremo de la pila llamado top.
    • pop(): elimina y devuelve el elemento en la parte superior de la pila, si no está vacío.
    • peek(): devuelve el elemento en la parte superior de la pila sin eliminarlo, si la pila no está vacía.
    • size(): devuelve el número de elementos en la pila.
    • isEmpty(): devuelve verdadero si la pila está vacía; de lo contrario, devuelve falso.
    • isFull(): devuelve verdadero si la pila está llena; de lo contrario, devuelve falso.
  3. Cola ADT
    • El tipo de datos abstractos de cola (ADT) sigue el diseño básico del tipo de datos abstractos de pila.
    • Cada Node contiene un puntero vacío a los datos y el puntero de enlace al siguiente elemento de la cola. La responsabilidad del programa es asignar memoria para almacenar los datos.
    • enqueue(): inserta un elemento al final de la cola.
    • dequeue(): elimina y devuelve el primer elemento de la cola, si la cola no está vacía.
    • peek(): devuelve el elemento de la cola sin eliminarlo, si la cola no está vacía.
    • size(): devuelve el número de elementos en la cola.
    • isEmpty(): devuelve verdadero si la cola está vacía; de lo contrario, devuelve falso.
    • isFull(): devuelve verdadero si la cola está llena; de lo contrario, devuelve falso.

Características de ADT:

  • Abstracción: El usuario no necesita conocer la implementación de la estructura de datos.
  • Mejor conceptualización: ADT nos brinda una mejor conceptualización del mundo real.
  • Robusto: el programa es robusto y tiene la capacidad de detectar errores.

A partir de estas definiciones, podemos ver claramente que las definiciones no especifican cómo se representarán estos ADT y cómo se llevarán a cabo las operaciones. Puede haber diferentes formas de implementar un ADT, por ejemplo, el ADT de lista se puede implementar utilizando arrays, o una lista de enlaces simples o una lista de enlaces dobles. De manera similar, Stack ADT y Queue ADT se pueden implementar mediante arrays o listas vinculadas. 

Este artículo es una contribución de Anuj Chauhan . Si te gusta GeeksforGeeks y te gustaría contribuir, también puedes escribir un artículo usando write.geeksforgeeks.org o enviar tu artículo por correo a review-team@geeksforgeeks.org. Vea su artículo que aparece en la página principal de GeeksforGeeks y ayude a otros Geeks.

Publicación traducida automáticamente

Artículo escrito por GeeksforGeeks-1 y traducido por Barcelona Geeks. The original can be accessed here. Licence: CCBY-SA

Deja una respuesta

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *