Izpitno vprašanje RAČ2PRA 5800

Iz MaFiRaWiki

GFDL Avtor tega članka je študent/ka PolonaVehovec.

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.

Vprašanje

Sestavi metodo public static void obrniElemente(Sklad s), ki obrne vrstni red elementov v skladu. Pri tem zahtevamo, da funkcija ne vrne novega sklada, ampak prvotnega z obrnjenimi elementi.

Ideja

Naredimo dva pomožna sklada pom1 in pom2. Potem elemente iz sklada s preložimo v pom1, nato pa elemente iz pom1 preložimo v pom2. Na koncu pa spet elemente iz pom2 preložimo nazaj v sklad s, in tako dobimo obrnjen vrstni red elementov.
(Na drug način to lahko naredimo tudi tako, da si pomagamo z vrsto. Elemente iz prvotnega sklada preložimo v vrsto in nato nazaj v sklad.)

primer:

Na začetku podan sklad:

Pomožni sklad pom1 je na začetku prazen, ko pa vanj preložimo elemente iz danega sklada dobimo:

Pomožni sklad pom2 je na začetku prazen, ko pa vanj preložimo elemente iz sklada pom1 dobimo:

Na zadnjem koraku pa ponovno preložimo elemente iz pom2 nazaj v prvotni (podani) sklad. Končni sklad:

Odgovor

  1. public static void obrniElemente(Sklad s) throws Exception{
  2. //naredimo dva pomožna sklada
  3. Sklad pom1 = new Sklad();
  4. Sklad pom2 = new Sklad();
  5. //najprej elemente iz sklada s preložimo v sklad pom1
  6. while(s.prazen()){
  7. pom1.vstavi(s.vrh());
  8. s.odstrani();
  9. }
  10. //potem elemente iz sklada pom1 preložimo v sklad pom2
  11. while(!pom1.prazen()){
  12. pom2.vstavi(pom1.vrh());
  13. pom1.odstrani();
  14. }
  15. //nato pa elemente iz sklada pom2 prenesemo nazaj v sklad s
  16. //sedaj bodo v obratnem vrstnem redu
  17. while(!pom2.prazen()){
  18. s.vstavi(pom2.vrh());
  19. pom2.odstrani();
  20. }
  21. }
Osebna orodja