Witam, trafiłem tutaj z pewnym problemem - pomagam koleżance napisać program zajmujący się listą jednokierunkową. Doszedłem do tego że program pokazuje, dopisuje i wyszukuje elementy listy ale nie umiem sprawić aby usunąć konkretny element. Visual c# nie pokazuje błędu ale program nie usuwa liczby z listy.
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
namespace ConsoleApplication2
{
class Program
{
public class ElementListy
{
public double Wartość;
public ElementListy Następny;
public ElementListy(double x)
{
Wartość = x; //Zapamiętanie
Następny = null; //Wskaźnik = null
}//Koniec konstruktora
public void Dopisz(double x)
{
if (Następny == null)
{
Następny = new ElementListy(x);
}
else
{
Następny.Dopisz(x);
}
} //Koniec metody
public void Pokaż()
{
Console.WriteLine("Wartość = " + Wartość);
if (Następny != null) Następny.Pokaż();
}//Koniec pokazywania
public bool Szukaj(double x)
{
bool wynik;
wynik = false; //Domyślna wartość!
if(Wartość == x)wynik = true;
if((wynik == false) && (Następny != null))
{
wynik = Następny.Szukaj(x);
}
return wynik;
}//koniec metody
public void UsuńWewnętrzny(double x)
{
ElementListy Pomoc;
if (Następny.Wartość == x)
{
if (Następny.Następny != null)
{
Pomoc = Następny;
Następny = Następny.Następny;
Pomoc = null;
}
}
}//Koniec metody UsuńWewnętrzny
}
public class ListaNaPoczątku
{
public ElementListy Korzeń;
public ElementListy NowyElement;
public ListaNaPoczątku(double x)
{
Korzeń = new ElementListy(x);
}
public void Dodaj(double x)
{
NowyElement = new ElementListy(x);
NowyElement.Następny = Korzeń;
Korzeń = NowyElement;
}
}
static void Main(string[] args)
{
double x = 5;
ListaNaPoczątku Głowa;
double i;
Głowa = null;
i = 0;
for (i = 0; i < 10; i++)
{
if (Głowa == null) Głowa = new ListaNaPoczątku(i); else Głowa.Dodaj(i);
}
Głowa.Korzeń.Pokaż();
Console.WriteLine(Głowa.Korzeń.Szukaj(x));
Głowa.Korzeń.UsuńWewnętrzny(x);
Głowa.Korzeń.Pokaż();
Console.WriteLine(Głowa.Korzeń.Szukaj(x));
Console.ReadKey();
}
}
}
Gdy coś pokombinuję to dostaję błąd w trakcie działania programu "Odwołanie do obiektu nie zostało ustawione na wystąpienie obiektu." ze wskazaniem na "Głowa.Korzeń.UsuńWewnętrzny(x);".