Llista (estructura de dades)
En informàtica, una llista és una estructura de dades seqüencial que conté una col·lecció d'elements ordenats. Una llista es diferencia d'altres estructures de dades com la pila o la cua en què a diferència d'aquestes s'hi pot modificar qualsevol element de la llista i no només algun dels extrems. En el context de la programació orientada a objectes, una llista es defineix com una instància d'un tipus abstracte de dades (TAD) i formalitza el concepte d'una col·lecció ordenada d'entitats o objectes. Una llista és un contenidor seqüencial. Les operacions habituals que ha d'implementar una llista són: Les habituals dels contenidors (vegeu l'article contenidor):
Les específiques d'una llista:
Operacions opcionals:
Hi ha dos aproximacions a l'hora d'implementar una llista, utilitzant un vector o utilitzant una llista encadenada. Un altre nom utilitzat sovint per a llista és seqüència. Aquest mot emfatitza la idea d'ordre. CaracterístiquesLes llistes tenen les següents propietats:
AplicacionsEn el món real podem trobar multitud d'exemples de llista (llista de la compra, llista telefònica, etc.) i concretament en informàtica s'utilitzen per emmagatzemar una llista de registres i s'utilitzen per ordenar elements. ImplementacionsCom ha hem comentat hi ha dos formes d'implementar una llista:
Les llistes poden ser manipulades utilitzant dos mètodes:
Alguns llenguatges de programació no ofereixen una estructura de dades llista però ofereixen vectors associatius o alguns tipus de taula per emular llistes. En informàtica les llistes són més fàcils d'implementar que els conjunts. Per aquesta raó, sovint els conjunts se solen implementar com a llistes amb restriccions, com per exemple, no permetre elements duplicats i que l'ordre sigui irrellevant. Cal dir però, que les implementacions més eficients de conjunts es realitzen utilitzant taules de hash. Si una llista està ordenada és més ràpid determinar si un element concret està o no està a la llista però a canvi és més costos manipular la llista (afegir o treure elements) quan es vol mantenir l'ordre. Exemple d'especificació d'una llista en Javapublic interface Llista<E> extends Contenidor<E> { public void afegirAlPrincipi(E element); public void afegirAlFinal(E element); public void afegirAbansDe(index, E element); public void afegirDespresDe(index, E elem); public void esborrarPrimer(); public void esborrar(index); public void esborrarSeguent(index); public void reemplacar(index, E element); public void intercanviar(index1,index2); public Iterador<E> elements(); } La classe Iterador és un tipus de dades abstracte utilitzant freqüentment en contenidors que permet recórrer col·leccions en un cert ordre. Java a través de la Java Collections Framework ofereix una interfície Llista. Vegeu tambéEnllaços externs
|