Izpitno vprašanje RAČ2PRA 7200

Iz MaFiRaWiki

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

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

Odstrani podatek iz dvojno povezanega linearnega seznama.

Odgovor

Podatek bomo odstranili tako, da bomo "izbrisali" vozel, v katerem se podatek nahaja.

  1. public static void odstrani(LinSez<Integer> z, int n){
  2.  
  3. //s pomoznim vozel pom pokazemo na prvi vozel
  4. //s pom se bomo sprehajali po linearnem seznamu
  5. Vozel pom = z.vrniPrviVozel();
  6. while(pom != null){
  7. if(pom.vrniPodatek() == n){
  8. Vozel a = pom.vrniPrejs(); //vozel a in vozel b bomo povezali, vmesnega pa bomo izpustili
  9. Vozel b = pom.vrniNasled();
  10. if(a != null && b!=null){
  11. a.nastaviNasled(b);
  12. b.nastaviPrejs(a); //metoda nastaviPrejs(Vozel n) nastavi v dvojnem LS povezavo na prejsnji vozel
  13. }
  14. else if(a==null && b!=null){ //potrebujemo smo enosmerno povezavo b->a
  15. b.nastaviPrejs(a);
  16. }
  17. else if(b==null && a!=null){ //potrebujemo samo enosmerno povezavo a->b
  18. a.nastaviNasled(b);
  19. }
  20. }
  21. pom = pom.vrniNasled();
  22. }
  23. }
Osebna orodja