FIUFOL

 avatar
unknown
csharp
5 months ago
7.0 kB
8
Indexable
using System;
//using System.Collections.Generic;
//using System.Linq;
//using System.Text;
///using System.Threading.Tasks;

namespace AISD_Zadanie04
{
    class Program
    {
        //UDało mi się sprawić, że elementy dodaje na koniec listy a pobieram je z początku czyli FIFO wyszło
        // niestety nie udało mi sie zabezpieczyc przed próbą pobrania wartości gdy lista jest pusta
        static void Main(string[] args)
        {
            ElementKolejki Kolejka1;
            Kolejka1 = new ElementKolejki(11);
            Kolejka1.DopiszNaKoncu(22);
            Kolejka1.DopiszNaKoncu(33);
            Kolejka1.DopiszNaKoncu(44);

            Console.WriteLine("Zawartość kolejki nr 1 to:");
            Console.WriteLine(Kolejka1.WypiszZawartoscKolejki());

            Console.WriteLine("Głowa ma wartsc:");
            Console.WriteLine(Kolejka1.ZobaczCoNaPoczatku().ToString());

            Console.WriteLine("Znow podgladam glowe");
            Console.WriteLine(Kolejka1.ZobaczCoNaPoczatku().ToString());

            Console.WriteLine("I jeszcze znow podgladam glowe");
            Console.WriteLine(Kolejka1.ZobaczCoNaPoczatku().ToString());

            Console.WriteLine("---------------------------------------------");


            KolejkaFIFO Kolejka2;
            Kolejka2 = new KolejkaFIFO();
            Kolejka2.Dopisz(111);
            Kolejka2.Dopisz(222);
            Kolejka2.Dopisz(333);

            Console.WriteLine("Wypisuje zawartosc kolejki nr 2");
            Console.WriteLine(Kolejka2.WypiszZawartosc());
            Console.WriteLine("Pobieram pierwszy element z kolejki nr 2");
            Console.WriteLine(Kolejka2.Pobierz());
            Console.WriteLine("Wypisuje zawartosc kolejki nr 2 po pobraniu pierszego elementu:");
            Console.WriteLine(Kolejka2.WypiszZawartosc());
            Console.WriteLine("Pobieram drugi element z kolejki nr 2");
            Console.WriteLine(Kolejka2.Pobierz());
            Console.WriteLine("Wypisuje zawartosc kolejki nr 2 po pobraniu drugi raz:");
            Console.WriteLine(Kolejka2.WypiszZawartosc());
            Console.WriteLine("Pobieram trzeci element z kolejki nr 2");
            Console.WriteLine(Kolejka2.Pobierz());
            Console.WriteLine("Wypisuje zawartosc kolejki nr 2 po pobraniu po raz trzeci");
            Console.WriteLine(Kolejka2.WypiszZawartosc());

            //Console.WriteLine("Pobieram element z kolejki kiedy jest pusta");
            //Console.WriteLine(Kolejka2.Pobierz());
            //Nie zabezpieczylem przed pobraniem z pustej kolejki

            Console.WriteLine("---------------------------------------------");

            KolejkaFIFO Kolejka3;
            Kolejka3 = new KolejkaFIFO();
            Kolejka3.Dopisz(1111);
            Kolejka3.Dopisz(2222);
            Kolejka3.Dopisz(3333);
            Kolejka3.Dopisz(4444);
            Kolejka3.Dopisz(5555);
            Kolejka3.Dopisz(4444);
            Kolejka3.Dopisz(2222);
            Kolejka3.Dopisz(2222);
            Kolejka3.Dopisz(3333);

            Console.WriteLine("Wypisuje zawartosc kolejki nr 3");
            Console.WriteLine(Kolejka3.WypiszZawartosc());

            Console.WriteLine("---------------------------------------------");

            Console.WriteLine("Usuwam kolejke nr 3");
            Kolejka3.UsunKolejke();
            Console.WriteLine("Proboje wypisac  zawarotsc kolejki nr 3");
            Console.WriteLine(Kolejka3.WypiszZawartosc());

            Console.ReadKey();



        }
    }

    class KolejkaFIFO
    {
        ElementKolejki glowa;

        public KolejkaFIFO()
        {
            glowa = null;
        }

        public void Dopisz(int x)
        {
            ElementKolejki nowy;
            nowy = new ElementKolejki(x);

            if (glowa == null)
            {
                glowa = nowy;
            }
            else
            {
                glowa.DopiszNaKoncu(x);
            }
        }
        public Boolean IsEmpty()
        {
            Boolean wynik = false;

            if (glowa == null)
            {
                wynik = true;
            }

            return wynik;
        }

        public int Pobierz()
        {
            int wartosc;
            ElementKolejki referencja;
            //if (!IsEmpty())
            //{
                wartosc = glowa.PobierzWartosc();//pobieram wartość pierwszego elementu
                referencja = glowa.GetNastepny();//pobieram wskaznik czy tam uchwyt na drugi element
                glowa = referencja; //sprawiam ze glowa wskazuje na drugi element
            //}
            
            return wartosc; //zwracam wartosc spod niegdysiejszego pierwszego elementu
        }

        public string WypiszZawartosc()
        {
            string Zawartosc;
            Zawartosc = "Kolejka jest pusta";

            if (!IsEmpty())
            {
                Zawartosc = glowa.WypiszZawartoscKolejki();
            }
            return Zawartosc;
        }

        public void UsunKolejke()
        {
            if (!IsEmpty())
            {
                glowa.Usun();
                //Console.WriteLine(glowa.WypiszZawartoscKolejki());
                //Console.WriteLine("Usuwam glowe");
                glowa = null;
            }
        }
    }
    class ElementKolejki
    {
        private int Value;
        private ElementKolejki Nastepny;

        public ElementKolejki(int x)
        {
            Value = x;
            Nastepny = null;
        }

        public int PobierzWartosc()
        {
            return Value;
        }

        public void DopiszNaKoncu(int x)
        {
            if (Nastepny == null)
            {
                Nastepny = new ElementKolejki(x);
            }
            else
            {
                Nastepny.DopiszNaKoncu(x);
            }
        }

        public int ZobaczCoNaPoczatku()
        {
            int Wartosc;

            Wartosc = Value;

            return Wartosc;
        }
        public string WypiszZawartoscKolejki()
        {
            string Zawartosc;
            Zawartosc = Value.ToString();

            if (Nastepny == null)
            {
                //Console.WriteLine("Trafilem na null");
            }
            else
            {
                //Console.WriteLine(Zawartosc);
                //Console.WriteLine("Nie trafilem na null ide dalej");
                Zawartosc = Zawartosc + " ," + Nastepny.WypiszZawartoscKolejki();

            }

            return Zawartosc;
        }

        public ElementKolejki GetNastepny()
        {
            ElementKolejki refer;
            refer = Nastepny;
            return refer;
        }

        public void Usun()
        {
            if (Nastepny != null)
            {
                Nastepny.Usun();
                Nastepny = null;
                //Console.WriteLine("Usunalem jeden element");
            }
        }

    }
}
Editor is loading...
Leave a Comment