• Najnowsze pytania
  • Bez odpowiedzi
  • Zadaj pytanie
  • Kategorie
  • Tagi
  • Zdobyte punkty
  • Ekipa ninja
  • IRC
  • FAQ
  • Regulamin
  • Książki warte uwagi

Dlaczego moja kolejka nie działa?

Object Storage Arubacloud
0 głosów
184 wizyt
pytanie zadane 28 sierpnia 2018 w C# przez velaro Użytkownik (950 p.)
edycja 28 sierpnia 2018 przez velaro
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;

namespace Kolejka
{
    class Program
    {
        class Węzeł
        {
            public int dane;
            public Węzeł next;
        }

        class Kolejka
        {
            Węzeł głowa = null;
            Węzeł ogon = null;

            public void Dodaj(int dana)
            {
                Węzeł tmp = new Węzeł();
                tmp.dane = dana;
                tmp.next = null;

                if(głowa==null)
                {
                    głowa = tmp;
                    ogon = tmp;
                    return;
                }

                ogon.next = tmp;
                ogon = tmp;
            }

            public void Usuń()
            {
                if(głowa == null)
                {
                    Console.WriteLine("Brak elementu do usuniecia");
                    return;
                }
                Węzeł tmp = głowa.next;
                głowa = tmp;
            }

            public int Podejrzyj()
            {
                if (głowa != null) return głowa.dane;
                else throw new Exception("Pusta kolejka");
            }

            public bool CzyPusta()
            {
                return głowa == null;
            }
        }

        static void Main(string[] args)
        {
            Kolejka<int> k = new Kolejka<int>(); //Tu nie działa moja własna kolejka
            List<int> l = new List<int>(); //Ta wbudowana struktura danych działa

            k.Dodaj(3);
            k.Dodaj(4);
            k.Dodaj(46);
            k.Dodaj(53);

            Console.ReadKey();
        }
    }
}

Nie działa konkretnie w linijce gdzie deklaruję moją kolejkę, natomiast linijkę niżej deklaruję wbudowaną strunkturę danych która działa i jej kompilator sie nie czepia.

komentarz 28 sierpnia 2018 przez RafalS VIP (122,820 p.)
Sprecyzuj co nie działa.
komentarz 28 sierpnia 2018 przez velaro Użytkownik (950 p.)
Uzupełniłem opis pytania
2
komentarz 28 sierpnia 2018 przez RafalS VIP (122,820 p.)
Totalnie nie znam się na C#, ale Kolejka wygląda jak zwykła klasa a nie klasa generyczna. Stwórz ją zatem bez podawania typu w <> i będzie działać.

2 odpowiedzi

+1 głos
odpowiedź 29 sierpnia 2018 przez sonquer Gaduła (4,280 p.)
wybrane 29 sierpnia 2018 przez velaro
 
Najlepsza
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
 
namespace Kolejka
{
    class Program
    {
        class Węzeł<T>
        {
            public T dane;
            public Węzeł<T> next;
        }
 
        class Kolejka<T>
        {
            Węzeł<T> głowa = null;
            Węzeł<T> ogon = null;
 
            public void Dodaj(T dana)
            {
                Węzeł<T> tmp = new Węzeł<T>();
                tmp.dane = dana;
                tmp.next = null;
 
                if(głowa==null)
                {
                    głowa = tmp;
                    ogon = tmp;
                    return;
                }
 
                ogon.next = tmp;
                ogon = tmp;
            }
 
            public void Usuń()
            {
                if(głowa == null)
                {
                    Console.WriteLine("Brak elementu do usuniecia");
                    return;
                }
                Węzeł<T> tmp = głowa.next;
                głowa = tmp;
            }
 
            public T Podejrzyj()
            {
                if (głowa != null) return głowa.dane;
                else throw new Exception("Pusta kolejka");
            }
 
            public bool CzyPusta()
            {
                return głowa == null;
            }
        }
 
        public static void Main(string[] args)
        {
            Kolejka<int> k = new Kolejka<int>();

            k.Dodaj(3);
            k.Dodaj(4);
            k.Dodaj(46);
            k.Dodaj(53);
            
            Console.WriteLine(k.Podejrzyj());
        }
    }
}

Ja się pod tym kodem nie podpisuje. Tak powinno to wyglądać o ile chcesz mieć kolejkę FIFO.

0 głosów
odpowiedź 29 sierpnia 2018 przez Rout Bywalec (2,350 p.)
Albo zamień class Kolejka na class Kolejka : <T>, albo tak jak napisał RafalS twórz obiekt bez podawania typu, czyli Kolejka k = new Kolejka();

Podobne pytania

0 głosów
1 odpowiedź 1,251 wizyt
pytanie zadane 18 stycznia 2020 w C# przez dawid2002 Mądrala (5,190 p.)
0 głosów
0 odpowiedzi 123 wizyt
0 głosów
0 odpowiedzi 271 wizyt
pytanie zadane 14 maja 2019 w C# przez jared Gaduła (3,600 p.)

92,555 zapytań

141,403 odpowiedzi

319,560 komentarzy

61,941 pasjonatów

Motyw:

Akcja Pajacyk

Pajacyk od wielu lat dożywia dzieci. Pomóż klikając w zielony brzuszek na stronie. Dziękujemy! ♡

Oto polecana książka warta uwagi.
Pełną listę książek znajdziesz tutaj.

Akademia Sekuraka

Kolejna edycja największej imprezy hakerskiej w Polsce, czyli Mega Sekurak Hacking Party odbędzie się już 20 maja 2024r. Z tej okazji mamy dla Was kod: pasjamshp - jeżeli wpiszecie go w koszyku, to wówczas otrzymacie 40% zniżki na bilet w wersji standard!

Więcej informacji na temat imprezy znajdziecie tutaj. Dziękujemy ekipie Sekuraka za taką fajną zniżkę dla wszystkich Pasjonatów!

Akademia Sekuraka

Niedawno wystartował dodruk tej świetnej, rozchwytywanej książki (około 940 stron). Mamy dla Was kod: pasja (wpiszcie go w koszyku), dzięki któremu otrzymujemy 10% zniżki - dziękujemy zaprzyjaźnionej ekipie Sekuraka za taki bonus dla Pasjonatów! Książka to pierwszy tom z serii o ITsec, który łagodnie wprowadzi w świat bezpieczeństwa IT każdą osobę - warto, polecamy!

...