Izpitno vprašanje RAČ2PRA 8700

Iz MaFiRaWiki

GFDL Avtor tega članka je študent/ka Pucelj stanka.

Pripravil/a ga je pri predmetu Računalništvo 2 (FMF PRA).


Kljub temu ste vsi vabljeni k urejanju in popravkom, saj je bistvo wikija ravno v sodelovalnem delu.


Vsebina

Vprašanje

|Vpr. 8700| Napiši objektno metodo public void obrniNaMestu(); ki seznam obrne tako, da ohrani vse vozle nespremenjene, le seznam je urejen v nasprotno smer: tisti element, ki je bil prej zadnji, je zdaj prvi, tisti, ki je bil prej prvi, je zdaj zadnji.

Odgovor

OPIS:

V zanki pregledujemo seznam. Poleg tekočega vozla hranimo še vozel, ki se nahaja pred njim, ter vozel, ki je njegov naslednik. Na vsakem koraku nastavimo naslednika tekočega vozla na dotedanjega predhodnika. Nato se z vsakim izmed vozlov, ki jih hranimo, premaknemo za ena naprej. To počnemo dokler naslednik tekočega seznama ni prazen. Ko se zanka izteče, kaže tekoči vozel na prvi element obrnjenega seznama. Nastaviti je potrebno le še naslednika tekočega vozla na njegovega predhodnika.

metoda obrniNaMestu()

  1.  
  2. //metoda, ki seznam obrne tako, da ohrani vse vozle nespremenjene
  3. public void obrniNaMestu(){
  4. //tekoci Vozel bomo hranili kar v Vozlu prvi
  5. //obrnjen prazen seznam je se vedno prazen
  6. if(prvi == null) return;
  7. //potrebujemo tudi Vozel pred tekocim in za tekocim Vozlom
  8. Vozel pred = null;
  9. Vozel nasled = prvi.vrniNasled();
  10. while(nasled != null){
  11. //naslednik tekocega Vozla bo v obrnjenem seznamu
  12. //predhodnik tega Vozla v prvotnem seznamu
  13. prvi.nastaviNasled(pred);
  14. //premaknemo se za en Vozel naprej
  15. pred = prvi;
  16. prvi = nasled;
  17. nasled = nasled.vrniNasled();
  18. }
  19. // nastavimo se naslednika prvega Vozla v novem seznamu
  20. prvi.nastaviNasled(pred);
  21. }

OPOMBA:
Za pravilno delovanje metode, potrebujemo še:

  • Vozel.class
  • LinSez.class


ZGLEDI:

  • Seznam, ki je prazen, je še vedno prazen.
  • Seznama, ki vsebuje samo en element, metoda ne spremeni.
  • Seznam s = {1, 2, 3};, metoda obrniNaMestu obrne v {3, 2, 1}.
Osebna orodja