SlideShare a Scribd company logo
1 of 43
Download to read offline
Egitura linealak
            ´
     Aitor Gomez-Goiri
  aitor.gomez@deusto.es

     Deustuko Unibertsitatea
      Ingeniaritza fakultatea
     http://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 dituzten
                      datu egitura linealak dira:
                          Mota jakin bateko edozein datu
                          kopurua gorde ditzakete
                          Datuen 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, klasera
  nortzuk 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 bektoreak
      Alde
          Sarbide zuzena elementu batera ailegatzeko bere posizioa
          jakinda
      Kontra
          Askoz jota izango duen tamaina ezagutu behar dugu aldez
          aurretik (konpilatzerako orduan)
          Elementu berriak sartzerakoan edo zerrendako elementuak
          kentzerakoan gainontzekoak desplazatu beharko dira
          (exekuzio denbora gora egiten du)
          Alferrik galdutako memoria zerrenda txikietan
Zerrenda estatikoa (II)




      Lotura inplizitoko zerrendak
          1. 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 sortu
                                       2   Azkenengo
                                           nodoa lortu
Zerrenda dinamikoa: add(objektua) III



      zerrendaDinamikoa.add(“Mikel”);



                                        1   Nodo berria sortu
                                        2   Azkenengo
                                            nodoa lortu
                                        3   Azkenengo
                                            nodoa berriarekin
                                            lotu
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 sortu
                                         2   Sartu nahi
                                             posizioko
                                             nodoaren
                                             aurrean dagoen
                                             nodoa lortu
Zerrenda dinamikoa: add(pos, objektua) III


      zerrendaDinamikoa.add(2, “Bego”);


                                          1   Nodo berria sortu
                                          2   Sartu nahi
                                              posizioko
                                              nodoaren
                                              aurrean dagoen
                                              nodoa lortu
                                          3   Nodo berria
                                              aurrekoaren
                                              hurrengoarekin
                                              lotu
Zerrenda dinamikoa: add(pos, objektua) IV


     zerrendaDinamikoa.add(2, “Bego”);


                                         1   Nodo berria sortu
                                         2   Sartu nahi
                                             posizioko
                                             nodoaren
                                             aurrean dagoen
                                             nodoa lortu
                                         3   Nodo berria
                                             aurrekoaren
                                             hurrengoarekin
                                             lotu
                                         4   Aurreko nodoa
                                             berriarekin lotu
Zerrenda dinamikoa: get I



     zerrendaDinamikoa.get(2);




                                 1   2 posizioan
                                     dagoen
                                     nodorarte joan
Zerrenda dinamikoa: get II



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




                                             1   2 posizioan
                                                 dagoen
                                                 nodorarte joan
                                             2   Bere elementua
                                                 bueltatu
Zerrenda dinamikoa: set I



     zerrendaDinamikoa.set(1, “Irati”);




                                          1   2 posizioan
                                              dagoen
                                              nodorarte joan
Zerrenda dinamikoa: set II



      zerrendaDinamikoa.set(1, “Irati”);



                                           1   2 posizioan
                                               dagoen
                                               nodorarte joan
                                           2   Bere elementua
                                               gainidatzi
Zerrenda dinamikoa: remove I



     zerrendaDinamikoa.remove();




                                   1   Azkenaurreko
                                       posizioan
                                       dagoen
                                       nodorarte joan
Zerrenda dinamikoa: remove II



     zerrendaDinamikoa.remove();


                                   1   Azkenaurreko
                                       posizioan
                                       dagoen
                                       nodorarte joan
                                   2   Bere hurrengoa
                                       null batekin
                                       gainidatzi
Zerrenda dinamikoa: remove(pos) I



     zerrendaDinamikoa.remove(1);




                                    1   Kendu nahi den
                                        nodoaren
                                        aurrean dagoen
                                        nodorarte joan
Zerrenda dinamikoa: remove(pos) II



     zerrendaDinamikoa.remove(1);


                                     1   Kendu nahi den
                                         nodoaren
                                         aurrean dagoen
                                         nodorarte joan
                                     2   Bere hurrengoa
                                         hurrengoaren
                                         nodoaren
                                         hurrengora
                                         gainidatzi
Zerrenda dinamikoa: iterator
     zerrendaDinamikoa.initializeIterator();
         Ibilbidea hasieratzen du aldagai bat lehenengo nodoarekin
         lotuz
     zerrendaEstatikoa.getElement()




                                                    1   Elementua
                                                        bueltatu
                                                    2   Hurrengo nodora
                                                        apuntatu




     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 egitura
          Elementu berriak bukaeratik sartzen dira
          Ilarako elementuak hasieratik ateratzen dira
      Ikusi javako Queue klasea
Zertarako behar ditugu ilarak?


    Ilarak bizitzako leku askotan ikusi
    ditzakegu:
        Gasolindegian
        Ileapaindegian
        Supermerkatuan
        etab.
    Informatikan?
        Serbitzarietan bezeroei
        erantzuteko
        Prozezuen arteko
        koordinazioan
        etab.
Ilara dinamikoak


     Bi atributu ditu
          Lehenengo nodoa
          Azkenengo 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 egitura
        Eragiketak mutur jakin batean (goian) dagoen
        elementuarekin egiten dira
        Bakarrik goian dagoen elementua
        berreskuratu dezakegu!
    Ikusi javako Stack klasea
Zertarako behar ditugu pilak?




    Liburu pila, plater pila, karta pila,
    etab.
    Informatikan?
         Espresio ebaluazioa eta parseo
         sintaktikoa
         Memoria 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.

More Related Content

More from Open University, KMi

More from Open University, KMi (8)

Zuhaitzak
ZuhaitzakZuhaitzak
Zuhaitzak
 
Konposizioa, herentzia eta polimorfismoa
Konposizioa, herentzia eta  polimorfismoa Konposizioa, herentzia eta  polimorfismoa
Konposizioa, herentzia eta polimorfismoa
 
Fitxategiak
FitxategiakFitxategiak
Fitxategiak
 
2D arraya eta objetu arrayak
2D arraya eta objetu arrayak2D arraya eta objetu arrayak
2D arraya eta objetu arrayak
 
"On the complementarity of Triple Spaces and the Web of Things" poster @ WoT2011
"On the complementarity of Triple Spaces and the Web of Things" poster @ WoT2011"On the complementarity of Triple Spaces and the Web of Things" poster @ WoT2011
"On the complementarity of Triple Spaces and the Web of Things" poster @ WoT2011
 
Triple Space adaptation for IoT
Triple Space adaptation for IoTTriple Space adaptation for IoT
Triple Space adaptation for IoT
 
A Triple Space-Based Semantic Distributed Middleware for Internet of Things
A Triple Space-Based Semantic Distributed Middleware for Internet of ThingsA Triple Space-Based Semantic Distributed Middleware for Internet of Things
A Triple Space-Based Semantic Distributed Middleware for Internet of Things
 
Introducción a PHP5
Introducción a PHP5Introducción a PHP5
Introducción a PHP5
 

Egitura linealak

  • 1. Egitura linealak ´ Aitor Gomez-Goiri aitor.gomez@deusto.es Deustuko Unibertsitatea Ingeniaritza fakultatea http://www.deusto.es 2012/03/06
  • 2. Aurkezpena 1 Zer eta zertarako? 2 Zerrenda estatikoak 3 Zerrenda dinamikoa 4 Ilarak 5 Pilak
  • 3. Aurkezpena 1 Zer eta zertarako? 2 Zerrenda estatikoak 3 Zerrenda dinamikoa 4 Ilarak 5 Pilak
  • 4. Zer dira zerrendak? Honako ezaugarriak dituen dituzten datu egitura linealak dira: Mota jakin bateko edozein datu kopurua gorde ditzakete Datuen ordena garrantzia du Ez da gauza bera (3,2,1) eta (1,2,3) Elementuak errepikatu ahal dira (3,4,3,2,1,4)
  • 5. Zertarako behar ditugu? Supermerkatuan erosi beharrekoak gogoratzeko, klasera nortzuk etortzen zareten jakiteko eta kontutan hartzeko edo, noski, ”olentzerori” opariak eskatzeko...
  • 7. Aurkezpena 1 Zer eta zertarako? 2 Zerrenda estatikoak 3 Zerrenda dinamikoa 4 Ilarak 5 Pilak
  • 8. Zerrenda estatikoa (I) Arrayak edo bektoreak Alde Sarbide zuzena elementu batera ailegatzeko bere posizioa jakinda Kontra Askoz jota izango duen tamaina ezagutu behar dugu aldez aurretik (konpilatzerako orduan) Elementu berriak sartzerakoan edo zerrendako elementuak kentzerakoan gainontzekoak desplazatu beharko dira (exekuzio denbora gora egiten du) Alferrik galdutako memoria zerrenda txikietan
  • 9. Zerrenda estatikoa (II) Lotura inplizitoko zerrendak 1. elementua 1. posizioan, 2. elementua 2.posizioan, etab. Memorian elementuak bata bestearen atzean daude (jarraian) Horrela gordetzen delako bektore bat memorian
  • 10. Nolakoa da zerrenda estatikoa? Vector klasea ikusi.
  • 11. Zerrenda estatikoa: add zerrendaEstatikoa.add(“Bego”); zerrendaEstatikoa.add(2, “Bego”);
  • 12. Zerrenda estatikoa: set eta get zerrendaEstatikoa.get(3); => “Bego” zerrendaEstatikoa.set(2, “Bego”);
  • 13. Zerrenda estatikoa: remove eta clear zerrendaEstatikoa.remove(); zerrendaEstatikoa.remove(2); zerrendaEstatikoa.clear();
  • 14. Aurkezpena 1 Zer eta zertarako? 2 Zerrenda estatikoak 3 Zerrenda dinamikoa 4 Ilarak 5 Pilak
  • 15. 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.
  • 16. Nolakoa da zerrenda dinamikoa? LinkedList klasea ikusi.
  • 17. Zerrenda dinamikoa: add(objektua) I zerrendaDinamikoa.add(“Mikel”); 1 Nodo berria sortu
  • 18. Zerrenda dinamikoa: add(objektua) II zerrendaDinamikoa.add(“Mikel”); 1 Nodo berria sortu 2 Azkenengo nodoa lortu
  • 19. Zerrenda dinamikoa: add(objektua) III zerrendaDinamikoa.add(“Mikel”); 1 Nodo berria sortu 2 Azkenengo nodoa lortu 3 Azkenengo nodoa berriarekin lotu
  • 20. Zerrenda dinamikoa: add(pos, objektua) I zerrendaDinamikoa.add(1, “Bego”); 1 Nodo berria sortu
  • 21. Zerrenda dinamikoa: add(pos, objektua) II zerrendaDinamikoa.add(2, “Bego”); 1 Nodo berria sortu 2 Sartu nahi posizioko nodoaren aurrean dagoen nodoa lortu
  • 22. Zerrenda dinamikoa: add(pos, objektua) III zerrendaDinamikoa.add(2, “Bego”); 1 Nodo berria sortu 2 Sartu nahi posizioko nodoaren aurrean dagoen nodoa lortu 3 Nodo berria aurrekoaren hurrengoarekin lotu
  • 23. Zerrenda dinamikoa: add(pos, objektua) IV zerrendaDinamikoa.add(2, “Bego”); 1 Nodo berria sortu 2 Sartu nahi posizioko nodoaren aurrean dagoen nodoa lortu 3 Nodo berria aurrekoaren hurrengoarekin lotu 4 Aurreko nodoa berriarekin lotu
  • 24. Zerrenda dinamikoa: get I zerrendaDinamikoa.get(2); 1 2 posizioan dagoen nodorarte joan
  • 25. Zerrenda dinamikoa: get II ˜ zerrendaDinamikoa.get(2); => “Inaki” 1 2 posizioan dagoen nodorarte joan 2 Bere elementua bueltatu
  • 26. Zerrenda dinamikoa: set I zerrendaDinamikoa.set(1, “Irati”); 1 2 posizioan dagoen nodorarte joan
  • 27. Zerrenda dinamikoa: set II zerrendaDinamikoa.set(1, “Irati”); 1 2 posizioan dagoen nodorarte joan 2 Bere elementua gainidatzi
  • 28. Zerrenda dinamikoa: remove I zerrendaDinamikoa.remove(); 1 Azkenaurreko posizioan dagoen nodorarte joan
  • 29. Zerrenda dinamikoa: remove II zerrendaDinamikoa.remove(); 1 Azkenaurreko posizioan dagoen nodorarte joan 2 Bere hurrengoa null batekin gainidatzi
  • 30. Zerrenda dinamikoa: remove(pos) I zerrendaDinamikoa.remove(1); 1 Kendu nahi den nodoaren aurrean dagoen nodorarte joan
  • 31. Zerrenda dinamikoa: remove(pos) II zerrendaDinamikoa.remove(1); 1 Kendu nahi den nodoaren aurrean dagoen nodorarte joan 2 Bere hurrengoa hurrengoaren nodoaren hurrengora gainidatzi
  • 32. Zerrenda dinamikoa: iterator zerrendaDinamikoa.initializeIterator(); Ibilbidea hasieratzen du aldagai bat lehenengo nodoarekin lotuz zerrendaEstatikoa.getElement() 1 Elementua bueltatu 2 Hurrengo nodora apuntatu zerrendaEstatikoa.hasNext(); Ibilbidea jarraitu ahal da?
  • 33. Aurkezpena 1 Zer eta zertarako? 2 Zerrenda estatikoak 3 Zerrenda dinamikoa 4 Ilarak 5 Pilak
  • 34. Zer dira ilarak? FIFO (First Input First Output) motako egitura Elementu berriak bukaeratik sartzen dira Ilarako elementuak hasieratik ateratzen dira Ikusi javako Queue klasea
  • 35. Zertarako behar ditugu ilarak? Ilarak bizitzako leku askotan ikusi ditzakegu: Gasolindegian Ileapaindegian Supermerkatuan etab. Informatikan? Serbitzarietan bezeroei erantzuteko Prozezuen arteko koordinazioan etab.
  • 36. Ilara dinamikoak Bi atributu ditu Lehenengo nodoa Azkenengo nodoa
  • 37. Ilarak: metodoak add(objektua) edo put(objektua) remove() peek() poll() edo get() peek() + remove()
  • 38. Aurkezpena 1 Zer eta zertarako? 2 Zerrenda estatikoak 3 Zerrenda dinamikoa 4 Ilarak 5 Pilak
  • 39. Zer dira pilak? LIFO (Last Input First Output) motako egitura Eragiketak mutur jakin batean (goian) dagoen elementuarekin egiten dira Bakarrik goian dagoen elementua berreskuratu dezakegu! Ikusi javako Stack klasea
  • 40. Zertarako behar ditugu pilak? Liburu pila, plater pila, karta pila, etab. Informatikan? Espresio ebaluazioa eta parseo sintaktikoa Memoria kudeaketa
  • 41. Pila dinamikoak Atributu bakarra edukiko du: lehenengo nodoa
  • 42. Pilak: metodoak push(objektua) edo add(objektua) edo pilatu(objektua) pop() peek() ez du nodoa ezabatzen
  • 43. 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.