Egitura linealak

43
Egitura linealak Aitor G ´ omez-Goiri [email protected] Deustuko Unibertsitatea Ingeniaritza fakultatea http://www.deusto.es 2012/03/06

description

Programazioa II (2012): 4. gaia

Transcript of Egitura linealak

Page 1: Egitura linealak

Egitura linealak

Aitor [email protected]

Deustuko UnibertsitateaIngeniaritza fakultateahttp://www.deusto.es

2012/03/06

Page 2: Egitura linealak

Aurkezpena

1 Zer eta zertarako?

2 Zerrenda estatikoak

3 Zerrenda dinamikoa

4 Ilarak

5 Pilak

Page 3: Egitura linealak

Aurkezpena

1 Zer eta zertarako?

2 Zerrenda estatikoak

3 Zerrenda dinamikoa

4 Ilarak

5 Pilak

Page 4: Egitura linealak

Zer dira zerrendak?

Honako ezaugarriak dituen dituztendatu egitura linealak dira:

Mota jakin bateko edozein datukopurua gorde ditzaketeDatuen ordena garrantzia du

Ez da gauza bera (3,2,1) eta (1,2,3)Elementuak errepikatu ahal dira

(3,4,3,2,1,4)

Page 5: Egitura linealak

Zertarako behar ditugu?

Supermerkatuan erosi beharrekoak gogoratzeko, klaseranortzuk etortzen zareten jakiteko eta kontutan hartzeko edo,noski, ”olentzerori” opariak eskatzeko...

Page 6: Egitura linealak

Ondo, baina... informatikan?

Adibidez...

Page 7: Egitura linealak

Aurkezpena

1 Zer eta zertarako?

2 Zerrenda estatikoak

3 Zerrenda dinamikoa

4 Ilarak

5 Pilak

Page 8: Egitura linealak

Zerrenda estatikoa (I)

Arrayak edo bektoreakAlde

Sarbide zuzena elementu batera ailegatzeko bere posizioajakinda

KontraAskoz jota izango duen tamaina ezagutu behar dugu aldezaurretik (konpilatzerako orduan)Elementu berriak sartzerakoan edo zerrendako elementuakkentzerakoan gainontzekoak desplazatu beharko dira(exekuzio denbora gora egiten du)Alferrik galdutako memoria zerrenda txikietan

Page 9: Egitura linealak

Zerrenda estatikoa (II)

Lotura inplizitoko zerrendak1. elementua 1. posizioan, 2. elementua 2.posizioan, etab.

Memorian elementuak bata bestearen atzean daude(jarraian)

Horrela gordetzen delako bektore bat memorian

Page 10: Egitura linealak

Nolakoa da zerrenda estatikoa?

Vector klasea ikusi.

Page 11: Egitura linealak

Zerrenda estatikoa: add

zerrendaEstatikoa.add(“Bego”);

zerrendaEstatikoa.add(2, “Bego”);

Page 12: Egitura linealak

Zerrenda estatikoa: set eta get

zerrendaEstatikoa.get(3); => “Bego”

zerrendaEstatikoa.set(2, “Bego”);

Page 13: Egitura linealak

Zerrenda estatikoa: remove eta clear

zerrendaEstatikoa.remove();

zerrendaEstatikoa.remove(2);

zerrendaEstatikoa.clear();

Page 14: Egitura linealak

Aurkezpena

1 Zer eta zertarako?

2 Zerrenda estatikoak

3 Zerrenda dinamikoa

4 Ilarak

5 Pilak

Page 15: Egitura linealak

Zerrenda dinamikoa

Loturadun zerrenda edo zerrenda kateatua.Zerrendaren posizio bakoitzak ”Nodo” izeneko objektua du.Nodo bakoitzak honako osagaiak ditu:

Gorde nahi den elementua.Zerrendaren hurrengo nodoarekin lotura.

azkenengoa null bat du.

Page 16: Egitura linealak

Nolakoa da zerrenda dinamikoa?

LinkedList klasea ikusi.

Page 17: Egitura linealak

Zerrenda dinamikoa: add(objektua) I

zerrendaDinamikoa.add(“Mikel”);

1 Nodo berria sortu

Page 18: Egitura linealak

Zerrenda dinamikoa: add(objektua) II

zerrendaDinamikoa.add(“Mikel”);

1 Nodo berria sortu2 Azkenengo

nodoa lortu

Page 19: Egitura linealak

Zerrenda dinamikoa: add(objektua) III

zerrendaDinamikoa.add(“Mikel”);

1 Nodo berria sortu2 Azkenengo

nodoa lortu3 Azkenengo

nodoa berriarekinlotu

Page 20: Egitura linealak

Zerrenda dinamikoa: add(pos, objektua) I

zerrendaDinamikoa.add(1, “Bego”);

1 Nodo berria sortu

Page 21: Egitura linealak

Zerrenda dinamikoa: add(pos, objektua) II

zerrendaDinamikoa.add(2, “Bego”);

1 Nodo berria sortu2 Sartu nahi

posiziokonodoarenaurrean dagoennodoa lortu

Page 22: Egitura linealak

Zerrenda dinamikoa: add(pos, objektua) III

zerrendaDinamikoa.add(2, “Bego”);

1 Nodo berria sortu2 Sartu nahi

posiziokonodoarenaurrean dagoennodoa lortu

3 Nodo berriaaurrekoarenhurrengoarekinlotu

Page 23: Egitura linealak

Zerrenda dinamikoa: add(pos, objektua) IV

zerrendaDinamikoa.add(2, “Bego”);

1 Nodo berria sortu2 Sartu nahi

posiziokonodoarenaurrean dagoennodoa lortu

3 Nodo berriaaurrekoarenhurrengoarekinlotu

4 Aurreko nodoaberriarekin lotu

Page 24: Egitura linealak

Zerrenda dinamikoa: get I

zerrendaDinamikoa.get(2);

1 2 posizioandagoennodorarte joan

Page 25: Egitura linealak

Zerrenda dinamikoa: get II

zerrendaDinamikoa.get(2); => “Inaki”

1 2 posizioandagoennodorarte joan

2 Bere elementuabueltatu

Page 26: Egitura linealak

Zerrenda dinamikoa: set I

zerrendaDinamikoa.set(1, “Irati”);

1 2 posizioandagoennodorarte joan

Page 27: Egitura linealak

Zerrenda dinamikoa: set II

zerrendaDinamikoa.set(1, “Irati”);

1 2 posizioandagoennodorarte joan

2 Bere elementuagainidatzi

Page 28: Egitura linealak

Zerrenda dinamikoa: remove I

zerrendaDinamikoa.remove();

1 Azkenaurrekoposizioandagoennodorarte joan

Page 29: Egitura linealak

Zerrenda dinamikoa: remove II

zerrendaDinamikoa.remove();

1 Azkenaurrekoposizioandagoennodorarte joan

2 Bere hurrengoanull batekingainidatzi

Page 30: Egitura linealak

Zerrenda dinamikoa: remove(pos) I

zerrendaDinamikoa.remove(1);

1 Kendu nahi dennodoarenaurrean dagoennodorarte joan

Page 31: Egitura linealak

Zerrenda dinamikoa: remove(pos) II

zerrendaDinamikoa.remove(1);

1 Kendu nahi dennodoarenaurrean dagoennodorarte joan

2 Bere hurrengoahurrengoarennodoarenhurrengoragainidatzi

Page 32: Egitura linealak

Zerrenda dinamikoa: iterator

zerrendaDinamikoa.initializeIterator();Ibilbidea hasieratzen du aldagai bat lehenengo nodoarekinlotuz

zerrendaEstatikoa.getElement()

1 Elementuabueltatu

2 Hurrengo nodoraapuntatu

zerrendaEstatikoa.hasNext();Ibilbidea jarraitu ahal da?

Page 33: Egitura linealak

Aurkezpena

1 Zer eta zertarako?

2 Zerrenda estatikoak

3 Zerrenda dinamikoa

4 Ilarak

5 Pilak

Page 34: Egitura linealak

Zer dira ilarak?

FIFO (First Input First Output) motako egituraElementu berriak bukaeratik sartzen diraIlarako elementuak hasieratik ateratzen dira

Ikusi javako Queue klasea

Page 35: Egitura linealak

Zertarako behar ditugu ilarak?

Ilarak bizitzako leku askotan ikusiditzakegu:

GasolindegianIleapaindegianSupermerkatuanetab.

Informatikan?Serbitzarietan bezeroeierantzutekoProzezuen artekokoordinazioanetab.

Page 36: Egitura linealak

Ilara dinamikoak

Bi atributu dituLehenengo nodoaAzkenengo nodoa

Page 37: Egitura linealak

Ilarak: metodoak

add(objektua)edo put(objektua)

remove()peek()poll()

edo get()peek() + remove()

Page 38: Egitura linealak

Aurkezpena

1 Zer eta zertarako?

2 Zerrenda estatikoak

3 Zerrenda dinamikoa

4 Ilarak

5 Pilak

Page 39: Egitura linealak

Zer dira pilak?

LIFO (Last Input First Output) motako egituraEragiketak mutur jakin batean (goian) dagoenelementuarekin egiten diraBakarrik goian dagoen elementuaberreskuratu dezakegu!

Ikusi javako Stack klasea

Page 40: Egitura linealak

Zertarako behar ditugu pilak?

Liburu pila, plater pila, karta pila,etab.Informatikan?

Espresio ebaluazioa eta parseosintaktikoaMemoria kudeaketa

Page 41: Egitura linealak

Pila dinamikoak

Atributu bakarra edukiko du: lehenengo nodoa

Page 42: Egitura linealak

Pilak: metodoak

push(objektua)edo add(objektua) edo pilatu(objektua)

pop()peek()

ez du nodoa ezabatzen

Page 43: Egitura linealak

Lizentzia

Irudien guztien jabetza intelektuala bere egileena* da,gainontzeko edukiak Creative Commons by-sa 3.0

lizentziapean daude.

* darrentunnicliff, plindberg, venusdale, thowi, chatraye eta yyycatch.