Sklad
Sklad
Kaj APS je in zakaj jo potrebujemo
Podatkovne strukture
Sklad
Operacije:
Uporaba sklada
Delo s skladom
Delo s skladom
N-ti
n_ti: (sklad, int) podatek
public Podatek n_ti(n) {
// vrne n-ti podatek tipa Podatek v nizu
if this.prazen() NAPAKA
else {
pod = this.vrh();
this.odstrani();
if (n == 1) return pod; // če iščemo prvega, je to vrhnji
else
return n_ti(n-1); // v preostanku sklada poiščemo n-1 tega
}
}
N-ti
“Nedestruktivna” oblika:
.NET in sklad
V ogrodju .NET že obstaja razred Stack.
Pozna metode:
In lastnost
Zgled
using System.Collections; // za običajen sklad
// demonstracija uporabe sklada
Stack mojS = new Stack();
mojS.Push("To"); mojS.Push("je");
mojS.Push("Matija"); mojS.Push("Lokar");
mojS.Push("4000"); mojS.Push("Kranj");
Console.WriteLine("V skladu je " + mojS.Count + " podatkov.");
// izpis
string pod = (string)mojS.Pop(); // sami moramo pretvoriti podatek nazaj v ustrezni tip
Console.WriteLine("Na vrhu v skladu je bil: " + pod);
Console.WriteLine("V skladu je sedaj " + mojS.Count + " podatkov.");
string podPoglej = (string)mojS.Peek(); // sami moramo pretvoriti podatek nazaj v ustrezni tip
Console.WriteLine("Na vrhu v skladu je : " + podPoglej);
Console.WriteLine("V skladu je še vedno " + mojS.Count + " podatkov.");
Izpiši vsebino sklada (in sklad ohrani)
Zanka
IzpisSklada
public static void IzpisSklada(Stack skl)
{
Stack novSk = new Stack();
Console.WriteLine("..... VRH .....");
while (skl.Count > 0) // dokler sklad ni prazen
{
string elt = (string)skl.Pop(); // vzamemo in odstranimo
Console.WriteLine(elt);
novSk.Push(elt); // vstavimo v pomožni sklad
}
Console.WriteLine("..... DNO .....");
// prelagamo nazaj
while (novSk.Count > 0) // dokler sklad ni prazen
{
string elt = (string)novSk.Pop(); // vzamemo in odstranimo
skl.Push(elt); // vstavimo nazaj v prvotni
}
}
Test - IzpisSklada
| static void Main(string[] args) { Stack mojS = new Stack(); mojS.Push("To"); mojS.Push("je"); mojS.Push("Matija"); mojS.Push("Lokar"); mojS.Push("Kranj"); Console.WriteLine("V skladu je " + mojS.Count + " podatkov."); // izpis Console.WriteLine("\nSklad - izpis\n"); IzpisSklada(mojS); Console.WriteLine("\nSklad - ponovni izpis - kontrola\n"); IzpisSklada(mojS); } |
|