public void Dodaj(T podatek)//Metoda za dodajanje elementa na začetek seznama { Vozel <T> nov = new Vozel <T>(podatek); nov.Nasl = Zacetek; Zacetek = nov; }
public Vozel() // privzeti konstruktor nastavi privzete vrednosti { this.Vsebina = default(T); // kazalec na naslednji element this.Nasl = null; Zacetek = this; }
//samo shrani brez pravilnega izpisa za private void shrani <T>(Vozel <T> voz) { string izpis = ""; string fil = DateTime.UtcNow.TimeOfDay.ToString().Replace(":", ""); //Console.WriteLine(DateTime.UtcNow.TimeOfDay.ToString().Replace(".", "")); FileStream fs = File.Create(@"./VozelInZbirka_Podatki/" + fil + ".txt"); fs.Close(); if (voz != null) { if (voz.Vsebina != null) { izpis += voz.Vsebina.ToString() + "\n"; voz = voz.Nasl; Izpis(voz); } } StreamWriter file = new StreamWriter(@"./VozelInZbirka_Podatki/" + fil + ".txt"); file.WriteLine(izpis); MessageBox.Show("Izpisano ", "Izpisano", MessageBoxButton.OK, MessageBoxImage.Information); file.Close();// lahko bi uporabu using stavek }
public void Izpis <T>(Vozel <T> Zacetek) // Metoda za izpis seznama { //shranim začetek seznama Console.Write("ZAČETEK->"); //premikamo se toliko časa, da je naslov naslednjega podatka null while (Zacetek != null) { Console.Write(Zacetek.Vsebina + " "); Zacetek = Zacetek.naslednji; } Console.Write("->KONEC\n"); }
//samo za vajo je rekruzivno private void Izpis <T>(Vozel <T> voz) { if (voz != null) { if (voz.Vsebina != null) //prej sem narove vstavljal pa je to blo potrebno dodati. ta if ni več potreben { vsebinaa += voz.Vsebina.ToString() + "\n"; voz = voz.Nasl; Izpis(voz); } } }
/*metoda za dodajanje novega podatka na konec seznama: drugi parameter je klican po referenci, saj se bo lahjo spremenil začetek seznama*/ public void VstaviNaKonec(T podatek) { Vozel <T> kjeSmo = Zacetek; //pomožni objekt za premik po seznamu while (kjeSmo.Nasl != null) /*dokler ne pridemo do konca seznama, oz. dokler ne najdemo podatka za brisanje*/ { kjeSmo = kjeSmo.Nasl; //prestavimo se na naslednji objekt } //ko pridemo iz zanke kazalec tekoči zagotovo kaže na zadnji objekt Vozel <T> nov = new Vozel <T>(); nov.Vsebina = podatek; kjeSmo.Nasl = nov; }
public int PrestejElemente() //Metoda, ki vrne število elementov seznama { int stevec = 0; if (Zacetek != null) { Vozel <T> kjeSmo = Zacetek;//začetek seznama stevec = 1; while (kjeSmo.Nasl != null) { stevec++; kjeSmo = kjeSmo.Nasl; } } return(stevec); }
/*metoda ki v seznamu poišče podatek "podatek" in ga odstrani: prvi parameter je klican po referenci, saj se bo lahjo spremenil začetek seznama*/ public void Izbriši(T podatek) { if (Zacetek.Vsebina != null)//če seznam ni prazen { //preverimo, če je iskani podatek že na začetku seznama if (Zacetek.Vsebina.Equals(podatek)) { if (Zacetek.naslednji != null) { Zacetek = Zacetek.Nasl; } else { Zacetek = null; } } else { Vozel <T> tekoči = Zacetek; //dodatni objekt za premik po seznamu while (tekoči.Nasl != null) /*dokler ne pridemo do konca seznama, oz. dokler ne najdemo podatka za brisanje*/ { //ali se vsebina NASLEDNJEGA objekta ujema z našim podatkom if (tekoči.Nasl.Vsebina.Equals(podatek)) { //preverimo, če ne gre slučajno za zadnji podatek v seznamu if (tekoči.Nasl.Nasl != null) { //ker to ni zadnji objekt,prestavimo kazalec za ena naprej tekoči.Nasl = tekoči.Nasl.Nasl; } else { tekoči.Nasl = null; /*ker gre za ZADNJI objekt, nastavimo kazalec na null*/ } break; //izhod iz zanke while } else { tekoči = tekoči.Nasl; // } } } } }
public void Izpis() //običajna metoda za izpis poljubnega seznama { //shranim začetek seznama if (this != null) //lahko tudi takole: if (Zacetek!=null) { //zapomnim si (shranim) začetek seznama Vozel <T> zacasni = ZacetekSeznama; Console.Write("ZAČETEK->"); // premikamo se toliko časa, da je naslov naslednjega podatka null while (zacasni != null) { Console.Write(zacasni.Vsebina + " "); zacasni = zacasni.naslednji; } Console.Write("->KONEC\n"); } else { Console.WriteLine("Seznam je prazen!"); } }
private void ŠteviloElementov(Vozel <Deli> voz) { int st = 0; vsebinaa = ""; while (voz != null) { if (voz.Vsebina != null) { if (voz.Vsebina.TaKolicina >= 10) { st++; } voz = voz.Nasl; } else { break; } } vsebinaa = "Število artiklov ki imajo ceno večjo od 10: " + st; }