Lista jednokierunkowa dopisywanie usuwanie wyszukiwanie

0

Witam nie mogę sobie poradzić z takim zadaniem może ktoś mi pomóc ?

Napisz klasę służącą do realizacji listy jednokierunkowej. Klasa ma umożliwiać dopisywanie do początku listy oraz do końca listy, wyszukiwanie elementu, usunięcie elementu oraz bezpieczne zlikwidowanie całej listy. Lista przechowuje elementy typu double.

0

Z czym konkretnie jest problem? Tworzysz strukturę np. ListElement, która posiada wartość i referencję (ListElement) do następnego elementu. Najpierw dodajesz pierwszy element. Gdy dodajesz następny, to w poprzednim elemencie dodajesz referencję do wstawianego. Gdy usuwasz element, to w elemencie poprzednim ustawiasz referencję do elementu następnego. Sama klasa listy trzyma referencję do pierwszego elementu. To chyba tyle z najważniejszych założeń.

0

udało mi sie zrobić cos takiego

using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;


namespace Lista_jednokierunkowa
{
    namespace lista1
    {
        class Program
        {
            static void Main(string[] args)
            {
                int x, i;
                double[] tab;

                List<int> lista = new List<int>();
                Console.WriteLine("Podaj wielkość tablicy:");
                string a;
                a = Console.ReadLine();
                x = int.Parse(a) + 1;
                tab = new double[x];
                Random r = new Random();
            
            
            }
            public class ElementListy
            {
            public double Wartość;
            public ElementListy Następny;
            public ElementListy(double x)
            {
           Wartość = x; //Zapamiętanie
           Następny = null; //Wskaźnik = null
       
            }   
            public void Usuń()
            {
            if(Następny != null)
             {
            if(Następny.Następny != null)
              {
           Następny.Usuń();
              }
         Następny = null;
          }
            }
          }
         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;
          }
        }
      }
         //Wyszukiwanie  
        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;
            
          ElementListy Pomocniczy;
          if(Korzeń.Wartość == x)
           {
        Pomocniczy = Korzeń.Następny;
       Korzeń = null;//Usuwanie z pamięci!!!
      Korzeń = Pomocniczy;
       }  
            
            
            
            
            }
        }
    }
1

tak się formatuje kod:

using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;


namespace Lista_jednokierunkowa
{
	namespace lista1
	{
		internal class Program
		{
			private static void Main(string[] args)
			{
				int x, i;
				double[] tab;

				List<int> lista = new List<int>();
				Console.WriteLine("Podaj wielkość tablicy:");
				string a;
				a = Console.ReadLine();
				x = int.Parse(a) + 1;
				tab = new double[x];
				Random r = new Random();


			}


			public class ElementListy
			{
				public double Wartość;
				public ElementListy Następny;


				public ElementListy(double x)
				{
					Wartość = x; //Zapamiętanie
					Następny = null; //Wskaźnik = null

				}


				public void Usuń()
				{
					if (Następny != null)
					{
						if (Następny.Następny != null)
						{
							Następny.Usuń();
						}
						Następny = null;
					}
				}

			}

			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;
				}
			}


			//Wyszukiwanie  
			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;

				ElementListy Pomocniczy;
				if (Korzeń.Wartość == x)
				{
					Pomocniczy = Korzeń.Następny;
					Korzeń = null; //Usuwanie z pamięci!!!
					Korzeń = Pomocniczy;
				}
			}

		}
	}
}

Teraz tak:

  • bool Szukaj jest zdefiniowane w nieprawidłowym miejscu;
  • nie da się tej metody zdefiniować w żadnym miejscu, bo odwołuje się do pól dwóch różnych obiektów jako własnych pól;
  • Szukaj() zwraca bool? Wynikiem szukania jest "gdzie", a nie "czy". Metoda powinna nazywać się CzyZnaleziono();
  • w środku Szukaj() jest return, który spowoduje, że druga część metody nigdy się nie wykona;
  • jest taki zwyczaj w programowaniu, że używa się wszędzie angielskich nazw.
0

a gdybym chciał tylko dodać do listy to jak to wyświetlić?

using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
 
 
namespace Lista_jednokierunkowa
{
    namespace lista1
    {
        class Program
        {
            static void Main(string[] args)
            {
                int x, i;
                double[] tab;
 
                List<int> lista = new List<int>();
                Console.WriteLine("Podaj wielkość tablicy:");
                string a;
                a = Console.ReadLine();
                x = int.Parse(a) + 1;
                tab = new double[x];
                Random r = new Random();
 
 
            }
            public class ElementListy
            {
            public double Wartość;
            public ElementListy Następny;
            public ElementListy(double x)
            {
           Wartość = x; //Zapamiętanie
           Następny = null; //Wskaźnik = null
 
            }   

1 użytkowników online, w tym zalogowanych: 0, gości: 1