Izpitno vprašanje RAČ2PRA 5700

Iz MaFiRaWiki

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

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

Zlivanje s pomočjo sklada.


Odgovor

  1.  
  2. public class Zlivanje
  3. {
  4. public static Sklad zlij(Sklad prviS, Sklad drugiS)
  5. { // zlivamo dva urejena sklada. Najvecji elementi so na vrhu
  6. Sklad pomS = new Sklad(20);
  7.  
  8. while (!prviS.prazen() && !drugiS.prazen())
  9. { // prelagajmo elemente, dokler sta oba sklada neprazna
  10. if (prviS.vrh() >= drugiS.vrh())
  11. {
  12. pomS.vstavi(prviS.vrh());
  13. prviS.odstrani();
  14. }
  15. else
  16. {
  17. pomS.vstavi(drugiS.vrh());
  18. drugiS.odstrani();
  19. }
  20. }
  21.  
  22. // ugotovimo, kateri sklad je se neprazen in vanj prelozimo elemente
  23. // s pomoznega sklada. Najmanjsi (vrhnji) element v pomoznem skladu
  24. // je vecji od vrhnjega (najvecjega) v nepraznem skladu -> ohranimo
  25. // urejenost
  26. if (prviS.prazen())
  27. {
  28. while (!pomS.prazen())
  29. {
  30. drugiS.vstavi(pomS.vrh());
  31. pomS.odstrani();
  32. }
  33.  
  34. return drugiS;
  35. }
  36.  
  37. if (drugiS.prazen())
  38. {
  39. while (!pomS.prazen())
  40. {
  41. prviS.vstavi(pomS.vrh());
  42. pomS.odstrani();
  43. }
  44.  
  45. return prviS;
  46. }
  47.  
  48. return pomS; // se ne bo nikoli izvedlo, a Java ne ve, da je vsaj en od zgornjih if-stavkov izpolnjen
  49. }
  50.  
  51. public static void main(String args[])
  52. {
  53. Sklad prviS = new Sklad(20);
  54. Sklad drugiS = new Sklad(20);
  55. Sklad rezS = new Sklad(20);
  56.  
  57. prviS.vstavi(1);
  58. prviS.vstavi(2);
  59. prviS.vstavi(5);
  60.  
  61. drugiS.vstavi(3);
  62. drugiS.vstavi(4);
  63. drugiS.vstavi(7);
  64.  
  65. prviS.izpis();
  66. drugiS.izpis();
  67.  
  68. rezS = zlij(prviS, drugiS);
  69.  
  70. rezS.izpis();
  71. }
  72. }
Osebna orodja