Upload
open-university-kmi
View
406
Download
6
Embed Size (px)
DESCRIPTION
Programazioa II (2012): 4. gaia
Citation preview
Egitura linealak
Aitor [email protected]
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.