logo

Tipus de dades abstractes

En aquest article, aprendrem sobre l'ADT, però abans d'entendre què és l'ADT, considerem els diferents tipus de dades integrades que se'ns proporcionen. Els tipus de dades com int, float, double, long, etc. es consideren tipus de dades incorporats i podem realitzar operacions bàsiques amb ells com ara sumes, restes, divisió, multiplicacions, etc. Ara podria haver-hi una situació en què necessitem operacions per al nostre tipus de dades definides per l'usuari que s'han de definir. Aquestes operacions només es poden definir com i quan les necessitem. Per tant, per simplificar el procés de resolució de problemes, podem crear estructures de dades juntament amb les seves operacions, i aquestes estructures de dades que no estan incorporades es coneixen com a tipus de dades abstractes (ADT).

desfer l'últim commit

El tipus de dades abstractes (ADT) és un tipus (o classe) per a objectes el comportament dels quals està definit per un conjunt de valors i un conjunt d'operacions. La definició d'ADT només esmenta quines operacions s'han de realitzar, però no com s'implementaran. No especifica com s'organitzaran les dades a la memòria i quins algorismes s'utilitzaran per implementar les operacions. S'anomena abstracte perquè ofereix una visió independent de la implementació.

El procés de proporcionar només l'essencial i ocultar els detalls es coneix com abstracció.



L'usuari de Per tant, un usuari només necessita saber què pot fer un tipus de dades, però no com s'implementarà. Penseu en ADT com una caixa negra que amaga l'estructura interna i el disseny del tipus de dades. Ara definirem tres ADT, concretament Llista ADT, Cua ADT.

1. Llista ADT

Vies de llista

  • Les dades generalment s'emmagatzemen en seqüència de tecles en una llista que té una estructura de capçalera que consta de comptar , punters i adreça de la funció de comparació necessari per comparar les dades de la llista.
  • El node de dades conté punter a una estructura de dades i a punter autorreferencial que apunta al següent node de la llista.
  • El Llista de funcions ADT es dona a continuació:
  • get() – Retorna un element de la llista en una posició determinada.
  • insert() – Insereix un element en qualsevol posició de la llista.
  • remove() – Elimina la primera ocurrència de qualsevol element d'una llista no buida.
  • removeAt() – Elimina l'element en una ubicació especificada d'una llista no buida.
  • replace() – Substitueix un element en qualsevol posició per un altre.
  • size() – Retorna el nombre d'elements de la llista.
  • isEmpty() – Retorna true si la llista està buida, en cas contrari retorna false.
  • isFull() – Retorna true si la llista està plena, en cas contrari retorna false.

2. Pila ADT

java booleà

Vista de la pila

  • A la implementació de Stack ADT en lloc d'emmagatzemar dades a cada node, s'emmagatzema el punter a les dades.
  • El programa assigna memòria per a dades i adreça es passa a la pila ADT.
  • El node principal i els nodes de dades estan encapsulats a l'ADT. La funció de trucada només pot veure el punter a la pila.
  • L'estructura del capçal de pila també conté un punter a superior i comptar del nombre d'entrades actualment a la pila.
  • push() – Insereix un element en un extrem de la pila anomenat top.
  • pop() – Elimina i torna l'element a la part superior de la pila, si no està buit.
  • peek() – Retorna l'element a la part superior de la pila sense eliminar-lo, si la pila no està buida.
  • size() – Retorna el nombre d'elements de la pila.
  • isEmpty() – Retorna true si la pila està buida, en cas contrari retorna false.
  • isFull() – Retorna true si la pila està plena, en cas contrari retorna false.

3. Cua ADT

Vista de la cua

desavantatges a Internet
  • El tipus de dades abstractes de la cua (ADT) segueix el disseny bàsic del tipus de dades abstractes de la pila.
  • Cada node conté un punter buit a dades i la punter d'enllaç al següent element de la cua. La responsabilitat del programa és assignar memòria per emmagatzemar les dades.
  • enqueue() – Insereix un element al final de la cua.
  • dequeue() – Elimina i retorna el primer element de la cua, si la cua no està buida.
  • peek() – Retorna l'element de la cua sense eliminar-lo, si la cua no està buida.
  • size() – Retorna el nombre d'elements de la cua.
  • isEmpty() – Retorna true si la cua està buida, en cas contrari retorna false.
  • isFull() – Retorna true si la cua està plena, en cas contrari retorna false.

Característiques de l'ADT:

Els tipus de dades abstractes (ADT) són una manera d'encapsular dades i operacions sobre aquestes dades en una única unitat. Algunes de les característiques clau dels ADT inclouen:

  • Abstracció: L'usuari no necessita conèixer la implementació de l'estructura de dades, només es proporcionen els elements essencials.
  • Millor conceptualització: L'ADT ens ofereix una millor conceptualització del món real.
  • Robusta: El programa és robust i té la capacitat de detectar errors.
  • Encapsulació : els ADT amaguen els detalls interns de les dades i proporcionen una interfície pública perquè els usuaris puguin interactuar amb les dades. Això facilita el manteniment i la modificació de l'estructura de dades.
  • Abstracció de dades : els ADT proporcionen un nivell d'abstracció dels detalls d'implementació de les dades. Els usuaris només han de conèixer les operacions que es poden realitzar amb les dades, no com s'implementen aquestes operacions.
  • Independència de l'estructura de dades : els ADT es poden implementar utilitzant diferents estructures de dades, com ara matrius o llistes enllaçades, sense afectar la funcionalitat de l'ADT.
  • Ocultació d'informació: Els ADT poden protegir la integritat de les dades permetent l'accés només als usuaris i operacions autoritzats. Això ajuda a prevenir errors i mal ús de les dades.
  • Modularitat : els ADT es poden combinar amb altres ADT per formar estructures de dades més grans i complexes. Això permet una major flexibilitat i modularitat en la programació.

En general, els ADT proporcionen una eina poderosa per organitzar i manipular dades d'una manera estructurada i eficient.

Els tipus de dades abstractes (ADT) tenen diversos avantatges i desavantatges que s'han de tenir en compte a l'hora de decidir utilitzar-los en el desenvolupament de programari. Aquests són alguns dels principals avantatges i desavantatges de l'ús d'ADT:

Avantatges:

  • Encapsulació : els ADT ofereixen una manera d'encapsular dades i operacions en una única unitat, facilitant la gestió i la modificació de l'estructura de dades.
  • Abstracció : Els ADT permeten als usuaris treballar amb estructures de dades sense haver de conèixer els detalls de la implementació, cosa que pot simplificar la programació i reduir els errors.
  • Independència de l'estructura de dades : Els ADT es poden implementar mitjançant diferents estructures de dades, que poden facilitar l'adaptació a les necessitats i requisits canviants.
  • Ocultació d'informació : els ADT poden protegir la integritat de les dades controlant l'accés i evitant modificacions no autoritzades.
  • Modularitat : els ADT es poden combinar amb altres ADT per formar estructures de dades més complexes, que poden augmentar la flexibilitat i la modularitat en la programació.

Desavantatges:

  • Per sobre : La implementació d'ADT pot afegir sobrecàrrec en termes de memòria i processament, cosa que pot afectar el rendiment.
  • Complexitat : els ADT poden ser complexos d'implementar, especialment per a estructures de dades grans i complexes.
  • Aprenentatge Corba: l'ús d'ADT requereix coneixement de la seva implementació i ús, que pot requerir temps i esforç per aprendre.
  • Flexibilitat limitada: Alguns ADT poden tenir una funcionalitat limitada o no ser adequats per a tot tipus d'estructures de dades.
  • Cost : La implementació d'ADT pot requerir recursos i inversió addicionals, que poden augmentar el cost del desenvolupament.

En general, els avantatges dels ADT sovint superen els desavantatges i s'utilitzen àmpliament en el desenvolupament de programari per gestionar i manipular dades d'una manera estructurada i eficient. No obstant això, és important tenir en compte les necessitats i requisits específics d'un projecte a l'hora de decidir si s'utilitzen ADT.

descarregar vídeo de youtube vlc

A partir d'aquestes definicions, podem veure clarament que les definicions no especifiquen com es representaran aquests ADT i com es realitzaran les operacions. Hi pot haver diferents maneres d'implementar un ADT, per exemple, el List ADT es pot implementar mitjançant matrius, o llista enllaçada individualment o llista doblement enllaçada. De la mateixa manera, l'ADT de pila i l'ADT de cua es poden implementar mitjançant matrius o llistes enllaçades.