Rešitev: Implementacija urejenega seznama

Iz MaFiRaWiki

Naloga: Implementacija urejenega seznama

 
Urejeni ali linearni seznam predstavimo kot dvojni seznam, pri 
katerem je na prvem mestu podseznama element seznama, 
na drugem mestu pa  položaj naslednjega elementa.
        
        Primer linearnega seznama : 
           
           seznam = {{b1, 2}, {b2, 3}, {b3, 4}, {b4, 5}, {b5, -1}}
           n := Length[seznam]
    Vstavi[seznam, c_, i_] := Map[If[#[[2]] == (i + 1) && #[[2]] ≠ (-1), {c, (i + 1)}, 
                                  If[#[[2]] == -1 && i == n, {c, -1}, #]] &, seznam]

    Vstavi::usage = "Funkcija,ki zamenja i-ti element z novim elementom."

     Primeri : 
        Vstavi[seznam, k, 1] ... vrne seznam  {{k, 2}, {b2, 3}, {b3, 4}, {b4, 5}, {b5, -1}}
        Vstavi[seznam, k, 3] ... vrne seznam  {{b1, 2}, {b2, 3}, {k, 4}, {b4, 5}, {b5, -1}}     
        Vstavi[seznam, k, 5] ... vrne seznam  {{b1, 2}, {b2, 3}, {b3, 4}, {b4, 5}, {k, -1}}

    Vrini[seznam, c_, i_] := Map[If[#[[2]] == -1 && i == n, {{c, i + 1}, {#[[1]], -1}},
                                If[#[[2]] < (i + 1), #,
                                If[#[[2]] > (i + 1), {#[[1]], #[[2]] + 1}, {{c, i + 1}, 
                                  {#[[1]], i +2}}]]] &, seznam]

    Vrini::usage = "Funkcija, ki vrine element na  i-to mesto."

     Primeri : Vrini[seznam, k, 1] ... vrne seznam  {{k, 2}, {b1, 3}, {b2, 4}, {b3, 5}, {b4, 6}, {b5, -1}}
               Vrini[seznam, k, 3] ... vrne seznam  {{b1, 2}, {b2, 3}, {k, 4}, {b3, 5}, {b4, 6}, {b5, -1}}
               Vrini[seznam, k, 5] ... vrne seznam  {{b1, 2}, {b2, 3}, {b3, 4}, {b4, 5}, {k, 6}, {b5, -1}}


    Vrni[seznam, i_] := Take[seznam, {i}]

    Vrni::usage = "Funkcija,ki pove, kaj je na i-tem mestu seznama."

     Primeri : Vrni[seznam, 4] ... vrne   {b4, 5}
               Vrni[seznam, 1] ... vrne   {b1, 2}
               Vrni[seznam, 5] ... vrne   {b5, -1}

    Odstrani[seznam, i_] := Map[If[#[[2]] == -1 && i == n, {}, 
                                If[#[[2]] < (i + 1), #, 
                                If[#[[2]] > (i + 1), {#[[1]], #[[2]] - 1}], {}]] &, seznam]

    Odstrani::usage = "Funkcija, ki odstrani i-ti element."

     Primeri : Odstrani[seznam, 1] ... vrne seznam  {{b2, 2}, {b3, 3}, {b4, 4}, {b5, -1}}
               Odstrani[seznam, 3] ... vrne seznam  {{b1, 2}, {b2, 3}, {b4, 4}, {b5, -1}}
               Odstrani[seznam, 5] ... vrne seznam  {{b1, 2}, {b2, 3}, {b3, 4}, {b4, -1}}


 == Glej tudi ==
 *Mathematica
Osebna orodja