Contenidor (estructura de dades)

De Viquipèdia
Dreceres ràpides: navegació, cerca

En informàtica, un contenidor és una classe, una estructura de dades, o un tipus abstracte de dades (TDA) les instàncies del qual són col·leccions d'altres objectes. S'utilitzen per emmagatzemar objectes d'una forma organitzada i seguint unes normes específiques d'accés.

Normalment els contenidors implementen mètodes o operacions que realitzin les següents funcions:

  • Un métode constructor per crear un nou contenidor buit
  • Una operació per obtenir el nombre d'elements dins del contenidor
  • Una operació per verificar si el contenidor està buit
  • Una operació per afegir o inserir un nou element al contenidor
  • Una operació per eliminar o treure un element del contenidor
  • Una operació per buidar o eliminar tots els element del contenidor
  • Un métode iterador per recórrer cada un dels elements continguts

Hi han dos tipus de contenidors:

  • Contenidors per valor: El contenidor emmagatzema còpies dels objectes que conté.
  • Contenidors per referència: El contenidor només conté referències (normalment adreces de memòria) als objectes.

Exemple d'operacions comunes de tots els contenidors[modifica | modifica el codi]

En general podem dir que tots els contenidors implementaran els següents mètodes:

  • Informar del nombre d'elements de l'objecte (p.ex el mètode nombreElements())
  • Informar si la llista està buida (buida)
  • Un mètode que retorni un objecte de tipus iterador

Un exemple d'especificació és el següent interfície del llenguatge de programació Java:

public interface Contenidor<E> 
{
public boolean buit();

public int nombreElements();

public Iterador<E> elements();
}

En alguns casos es pot utilitzar una classe abstracta per implementar aquests mètodes.

Contenidors seqüencials[modifica | modifica el codi]

Els contenidors seqüencials són aquells on l'ordre en que s'emmagatzemen els elements és important. La següent llista ens mostra els contenidors seqüencials més utilitzats:

Exemples de contenidors[modifica | modifica el codi]

Implementacions[modifica | modifica el codi]