From d10502e946b17d8388482bf5c90fff1c5372db51 Mon Sep 17 00:00:00 2001 From: Lendaia Mirai Date: Fri, 5 Dec 2025 02:34:44 +0100 Subject: [PATCH] thx --- ALGA/Adatszerkezetek/06_Szotar.cs | 130 +++++++++++++++++++++++++++++- 1 file changed, 129 insertions(+), 1 deletion(-) diff --git a/ALGA/Adatszerkezetek/06_Szotar.cs b/ALGA/Adatszerkezetek/06_Szotar.cs index 095456c..5d0f2a3 100644 --- a/ALGA/Adatszerkezetek/06_Szotar.cs +++ b/ALGA/Adatszerkezetek/06_Szotar.cs @@ -1,6 +1,134 @@ using System; +using System.Collections.Generic; +using System.Linq; +using System.Text; +using System.Threading.Tasks; +using System; +using System.Collections.Generic; +using static System.Net.Mime.MediaTypeNames; namespace OE.ALGA.Adatszerkezetek { - // 6. heti labor feladat - Tesztek: 06_SzotarTesztek.cs + + public class SzotarElem + { + public K Kulcs; + public T Tart; + + public SzotarElem(K kulcs, T tart) + { + Kulcs = kulcs; + Tart = tart; + } + } + + + public class HasitoSzotarTulcsordulasiTerulettel : Szotar + { + private SzotarElem[] E; + private Func h; + private Lista> U = new LancoltLista>(); + + public HasitoSzotarTulcsordulasiTerulettel(int meret, Func hasitoFuggveny) + { + E = new SzotarElem[meret]; + this.h = x => Math.Abs(hasitoFuggveny(x)) % E.Length; + } + + public HasitoSzotarTulcsordulasiTerulettel(int meret) : this(meret, x => x.GetHashCode()) + { + } + + private SzotarElem KulcsKeres(K kulcs) + { + int i = h(kulcs); + if (E[i] != null && EqualityComparer.Default.Equals(E[i].Kulcs, kulcs)) + { + return E[h(kulcs)]; + } + else + { + SzotarElem e = null; + U.Bejar(x => + { + if (EqualityComparer.Default.Equals(x.Kulcs, kulcs)) + { + e = x; + } + }); + return e; + } + } + + public void Beir(K kulcs, T ertek) + { + SzotarElem e = KulcsKeres(kulcs); + if (e != null) + { + e.Tart = ertek; + } + else + { + SzotarElem newDictenary = new SzotarElem(kulcs, ertek); + if (E[h(kulcs)] == null) + { + E[h(kulcs)] = newDictenary; + } + else + { + U.Hozzafuz(newDictenary); + } + } + } + + + + public T Kiolvas(K kulcs) + { + SzotarElem e = KulcsKeres(kulcs); + if (e != null) + { + return e.Tart; + } + else + { + throw new HibasKulcsKivetel(); + } + } + + + + + + public void Torol(K kulcs) + { + if (E[h(kulcs)] != null && EqualityComparer.Default.Equals(E[h(kulcs)].Kulcs, kulcs)) + { + E[h(kulcs)] = null; + + } + else + { + SzotarElem e = null; + U.Bejar(x => + { + if (EqualityComparer.Default.Equals(x.Kulcs, kulcs)) + { + e = x; + } + }); + if (e != null) + { + U.Torol(e); + } + else + { + throw new HibasKulcsKivetel(); + } + + } + } + } + } +