egitura linealak

Post on 23-Jun-2015

410 Views

Category:

Technology

6 Downloads

Preview:

Click to see full reader

DESCRIPTION

Programazioa II (2012): 4. gaia

TRANSCRIPT

Egitura linealak

Aitor Gomez-Goiriaitor.gomez@deusto.es

Deustuko UnibertsitateaIngeniaritza fakultateahttp://www.deusto.es

2012/03/06

Aurkezpena

1 Zer eta zertarako?

2 Zerrenda estatikoak

3 Zerrenda dinamikoa

4 Ilarak

5 Pilak

Aurkezpena

1 Zer eta zertarako?

2 Zerrenda estatikoak

3 Zerrenda dinamikoa

4 Ilarak

5 Pilak

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)

Zertarako behar ditugu?

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

Ondo, baina... informatikan?

Adibidez...

Aurkezpena

1 Zer eta zertarako?

2 Zerrenda estatikoak

3 Zerrenda dinamikoa

4 Ilarak

5 Pilak

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

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

Nolakoa da zerrenda estatikoa?

Vector klasea ikusi.

Zerrenda estatikoa: add

zerrendaEstatikoa.add(“Bego”);

zerrendaEstatikoa.add(2, “Bego”);

Zerrenda estatikoa: set eta get

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

zerrendaEstatikoa.set(2, “Bego”);

Zerrenda estatikoa: remove eta clear

zerrendaEstatikoa.remove();

zerrendaEstatikoa.remove(2);

zerrendaEstatikoa.clear();

Aurkezpena

1 Zer eta zertarako?

2 Zerrenda estatikoak

3 Zerrenda dinamikoa

4 Ilarak

5 Pilak

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.

Nolakoa da zerrenda dinamikoa?

LinkedList klasea ikusi.

Zerrenda dinamikoa: add(objektua) I

zerrendaDinamikoa.add(“Mikel”);

1 Nodo berria sortu

Zerrenda dinamikoa: add(objektua) II

zerrendaDinamikoa.add(“Mikel”);

1 Nodo berria sortu2 Azkenengo

nodoa lortu

Zerrenda dinamikoa: add(objektua) III

zerrendaDinamikoa.add(“Mikel”);

1 Nodo berria sortu2 Azkenengo

nodoa lortu3 Azkenengo

nodoa berriarekinlotu

Zerrenda dinamikoa: add(pos, objektua) I

zerrendaDinamikoa.add(1, “Bego”);

1 Nodo berria sortu

Zerrenda dinamikoa: add(pos, objektua) II

zerrendaDinamikoa.add(2, “Bego”);

1 Nodo berria sortu2 Sartu nahi

posiziokonodoarenaurrean dagoennodoa lortu

Zerrenda dinamikoa: add(pos, objektua) III

zerrendaDinamikoa.add(2, “Bego”);

1 Nodo berria sortu2 Sartu nahi

posiziokonodoarenaurrean dagoennodoa lortu

3 Nodo berriaaurrekoarenhurrengoarekinlotu

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

Zerrenda dinamikoa: get I

zerrendaDinamikoa.get(2);

1 2 posizioandagoennodorarte joan

Zerrenda dinamikoa: get II

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

1 2 posizioandagoennodorarte joan

2 Bere elementuabueltatu

Zerrenda dinamikoa: set I

zerrendaDinamikoa.set(1, “Irati”);

1 2 posizioandagoennodorarte joan

Zerrenda dinamikoa: set II

zerrendaDinamikoa.set(1, “Irati”);

1 2 posizioandagoennodorarte joan

2 Bere elementuagainidatzi

Zerrenda dinamikoa: remove I

zerrendaDinamikoa.remove();

1 Azkenaurrekoposizioandagoennodorarte joan

Zerrenda dinamikoa: remove II

zerrendaDinamikoa.remove();

1 Azkenaurrekoposizioandagoennodorarte joan

2 Bere hurrengoanull batekingainidatzi

Zerrenda dinamikoa: remove(pos) I

zerrendaDinamikoa.remove(1);

1 Kendu nahi dennodoarenaurrean dagoennodorarte joan

Zerrenda dinamikoa: remove(pos) II

zerrendaDinamikoa.remove(1);

1 Kendu nahi dennodoarenaurrean dagoennodorarte joan

2 Bere hurrengoahurrengoarennodoarenhurrengoragainidatzi

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?

Aurkezpena

1 Zer eta zertarako?

2 Zerrenda estatikoak

3 Zerrenda dinamikoa

4 Ilarak

5 Pilak

Zer dira ilarak?

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

Ikusi javako Queue klasea

Zertarako behar ditugu ilarak?

Ilarak bizitzako leku askotan ikusiditzakegu:

GasolindegianIleapaindegianSupermerkatuanetab.

Informatikan?Serbitzarietan bezeroeierantzutekoProzezuen artekokoordinazioanetab.

Ilara dinamikoak

Bi atributu dituLehenengo nodoaAzkenengo nodoa

Ilarak: metodoak

add(objektua)edo put(objektua)

remove()peek()poll()

edo get()peek() + remove()

Aurkezpena

1 Zer eta zertarako?

2 Zerrenda estatikoak

3 Zerrenda dinamikoa

4 Ilarak

5 Pilak

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

Zertarako behar ditugu pilak?

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

Espresio ebaluazioa eta parseosintaktikoaMemoria kudeaketa

Pila dinamikoak

Atributu bakarra edukiko du: lehenengo nodoa

Pilak: metodoak

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

pop()peek()

ez du nodoa ezabatzen

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.

top related