Witam,
Nie mogę sobie samemu poradzić z tym (pewnie dla wielu prostym) programem, ale dopiero się uczę.
Mam napisać program który pozwala dodawać nowy element na końcu jak i na początku listy, pozwala usunąć dany element listy oraz cała listę i wyszukanie elementu. Chciałem sobie też napisać fragment aby wyświetlał mi cała listę ale również mi nie wychodzi.
Takie fragmenty metod w klasie pokazał mi prowadzący zajęcia, tzn miał w prezentacji i z tego korzystaliśmy.
Również nie wiem jak usunąć całą listę dlatego fragment w klasie głównej za komentowałem aby program działał poprawnie.
Mam nadzieję że bardzo nie zagmatwałem opisu sprawy, ale proszę o wybaczenie bo jest to mój pierwszy post tutaj :)
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
namespace ConsoleApplication1
{
public class ElementListy
{
public double Wartość;
public ElementListy Następny;
public ElementListy Korzeń;
public ElementListy NowyElement;
public ElementListy(double x)
{
Wartość = x; //Zapamiętanie
Następny = null; //Wskaźnik = null
}//Koniec konstruktora
public void Dopisz(double x) // na koncu listy
{
if (Następny == null)
{
Następny = new ElementListy(x);
}
else
{
Następny.Dopisz(x);
}
}//Koniec metody
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 pokaż(double x)
{
Console.WriteLine("x= " + x);
if (Następny != null)
Następny.pokaż(x);
}
public void usuńelement(double x)
{
ElementListy Pomocniczy; // na poczatku listy
if (Korzeń.Wartość == x)
{
Pomocniczy = Korzeń.Następny;
Korzeń = null;//Usuwanie z pamięci.
Korzeń = Pomocniczy;
}
if (Następny != null) // na koncu listy
{
if (Następny.Wartość == x)
{
if (Następny.Następny == null)
{
Następny = null;
}
}
}
ElementListy Pomoc; // w srodku listy
if (Następny.Wartość == x)
{
if (Następny.Następny != null)
{
Pomoc = Następny;
Następny = Następny.Następny;
Pomoc = null;//Usunięcie z pamięci!!
}
}
}
public void UsuńListe(ElementListy Korzeń)
{
if (Następny != null)
{
if (Następny.Następny != null)
{
UsuńListe(Następny);
}
Następny = null;
}
}//koniec metody
}
public class ListaNaPoczątku
{
public ElementListy Korzeń;
public ElementListy NowyElement;
public void Dodaj(double x)
{
NowyElement = new ElementListy(x);
NowyElement.Następny = Korzeń;
Korzeń = NowyElement;
}
}
class Program
{
static void Main(string[] args)
{
double x;
int kontrol;
int opcja;
opcja = 0;
kontrol = 0;
x = 0;
ElementListy Lista = new ElementListy(x);
ListaNaPoczątku Poczatek = new ListaNaPoczątku();
do
{
kontrol = 0;
Console.WriteLine("Wybierz co chcesz zrobic:");
Console.Write("1. Dopisz element na początku listy.\n2. Dopisz element na końcu listy.\n");
Console.Write("3. Sprawdź czy dany element jest w liście.\n4. Pokaż listę.\n");
Console.WriteLine("5. Usuń dany element.\n6. Usuń całą listę.");
opcja = Convert.ToInt32(Console.ReadLine());
switch (opcja)
{
case 1:
{
Console.WriteLine("Podaj element do wpisania na początek listy");
x = Convert.ToDouble(Console.ReadLine());
Poczatek.Dodaj(x);
break;
}
case 2:
{
Console.WriteLine("Podaj element do wpisaniana koniec listy");
x = Convert.ToDouble(Console.ReadLine());
Lista.Dopisz(x);
break;
}
case 3:
{
Console.WriteLine("Podaj element aby sprawdzic czy znajduje się on w liście");
x = Convert.ToDouble(Console.ReadLine());
Lista.Szukaj(x);
break;
}
case 4:
{
Console.Clear();
Lista.pokaż(x);
break;
}
case 5:
{
Console.WriteLine("Podaj wartośc jaką mam usunąc z listy");
x = Convert.ToDouble(Console.ReadLine());
Lista.usuńelement(x);
break;
}
//case 6:
//{
// Lista.UsuńListe(korzeń);
// Console.WriteLine("Lista została usunięta");
// break;
//}
default:
{
Console.WriteLine("Zła opcja");
break;
}
}
Console.WriteLine("Chcesz wrócic spowrotem do menu?\n1. TAK\n2. NIE");
kontrol = Convert.ToInt32(Console.ReadLine());
Console.Clear();
}
while (kontrol == 1);
Console.ReadKey();
}
}
}