Witam, mam mały problem z sortowaniem na liście. Napisałem klasy realizujące listę i wszystkie przypadki dodawania elementów, jednakże do listy nie chcą się dodawać elementy mniejsze od korzenia. Czy mógłby się ktoś przyjrzeć i podpowiedzieć co jest nie tak ??
Program:
namespace SortowanieNaLiście
{
class Program
{
static void Main(string[] args)
{
Random Generator;
int x,i=0 ;
ElementListy SortowanieNaLiście;
Generator = new Random();
x = Generator.Next(100);
SortowanieNaLiście = new ElementListy((double)x);
for (i = 0; i < 10000; i++)
{
x = Generator.Next(100);
SortowanieNaLiście.ZapiszKorzeń((double)x);
SortowanieNaLiście.PodmieńKorzeń((double)x);
SortowanieNaLiście.Dopisz((double)x);
}
SortowanieNaLiście.Wyświetl(false);
Console.ReadLine();
}
}
}
Klasy:
namespace SortowanieNaLiście
{
public class ElementListy
{
public double Wartość;
public ElementListy Następny;
public ElementListy NowyElement;
public ElementListy Korzeń;
public ElementListy Nowy;
//Konstruktor
public ElementListy(double x)
{
Wartość = x;
Następny = null;
NowyElement = null;
}//Koniec konstruktora
public void ZapiszKorzeń(double x,int i)
{
if(i==0)
Korzeń = new ElementListy(x);
}
public void PodmieńKorzeń(double x)
{
if (x < Korzeń.Wartość)
{
Nowy = new ElementListy(x);
Nowy.Następny = Korzeń;
Korzeń = Nowy;
Nowy = null;
}
}
//Metoda dopisująca do końca listy
public void Dopisz(double x)
{
if (this.Wartość < x)
{
if (this.Następny == null) Następny = new ElementListy(x);
else
{
if (Następny.Wartość < x) Następny.Dopisz(x);
else
{
NowyElement = new ElementListy(x);
NowyElement.Następny = this.Następny;
Następny = NowyElement;
NowyElement = null;
}//end if Następny.Wartość < x
}//end if this.Następny == null)
}//end if this.Wartość < x
if (this.Wartość == x)
{
NowyElement = new ElementListy(x);
NowyElement.Następny = this.Następny;
this.Następny = NowyElement;
NowyElement = null;
}
}
//Metoda wyświetlająca zawartość listy
public void Wyświetl(bool NastępnaLinia)
{
string Dodatek;
Dodatek = "";
if (NastępnaLinia == true) Dodatek = "\n";
Console.WriteLine(Wartość + Dodatek);
if (Następny != null) Następny.Wyświetl(NastępnaLinia);
}//Koniec metody wyświetlającej zawartość listy
}//Koniec klasy ElementListy
}
Z góry dziękuję za pomoc.
Szymod
New member
Posty: 1
Dołączył(a): Śr cze 12, 2013 8:07 pm