From 1263d5b7558a6f0d114c00b7dd0148eb38509599 Mon Sep 17 00:00:00 2001 From: Lendaia Mirai Date: Wed, 22 Oct 2025 01:06:08 +0200 Subject: [PATCH] JustKeepSwimming --- ALGA_heti_feladatok/ALGA/04_EgyszeruLanc.cs | 174 +++++++++++++++++--- 1 file changed, 153 insertions(+), 21 deletions(-) diff --git a/ALGA_heti_feladatok/ALGA/04_EgyszeruLanc.cs b/ALGA_heti_feladatok/ALGA/04_EgyszeruLanc.cs index 7cb71cd..dac244d 100644 --- a/ALGA_heti_feladatok/ALGA/04_EgyszeruLanc.cs +++ b/ALGA_heti_feladatok/ALGA/04_EgyszeruLanc.cs @@ -1,4 +1,6 @@ using System; +using System.Collections; +using System.Collections.Generic; using System.Runtime.CompilerServices; namespace OE.ALGA.Adatszerkezetek; @@ -54,11 +56,13 @@ public class LancoltVerem : Verem { if (Ures) { - fej.kov = new LancElem(ertek, null, fej); + fej = new LancElem(ertek, null, null); + teteje = fej; } else { teteje.kov = new LancElem(ertek, null, teteje); + teteje = teteje.kov; } } @@ -70,9 +74,20 @@ public class LancoltVerem : Verem } else { - T ertek = Felso(); - teteje.elozo.kov = null; - return ertek; + if (teteje.elozo == null) + { + T ertek = fej.tart; + fej = null; + teteje = fej; + return ertek; + } + else + { + T ertek = Felso(); + teteje.elozo.kov = null; + teteje = teteje.elozo; + return ertek; + } } } } @@ -82,7 +97,7 @@ public class LancoltSor : Sor LancElem? vege; public bool Ures { - get { return (fej == null && vege == null); } + get { return ( vege == null); } } public LancoltSor() { @@ -101,7 +116,8 @@ public class LancoltSor : Sor { if (Ures) { - fej.tart = ertek; + fej = new LancElem(ertek, null, null); + vege = fej; } else { @@ -123,14 +139,23 @@ public class LancoltSor : Sor } else { - T ertek = vege.tart; - vege = vege.elozo; - vege.kov = null; - return ertek; + if (vege.elozo == null) + { + T ertek = vege.tart; + vege = null; + return ertek; + } + else + { + T ertek = fej.tart; + fej = fej.kov; + fej.elozo = null; + return ertek; + } } } } -public class LancoltLista : Lista +public class LancoltLista : Lista, IEnumerable { int n; LancElem? fej; @@ -141,30 +166,70 @@ public class LancoltLista : Lista } public LancoltLista() { - + } public void Felszabadit() { - + } public void Bejar(Action muvelet) { - throw new NotImplementedException(); + for (int i = 0; i < n; i++) + { + muvelet(Indexedik(i).tart); + } } public void Beszur(int index, T ertek) { - LancElem? xd = Indexedik(index).elozo; - xd.kov = new LancElem(ertek, Indexedik(index), xd); - n++; + if (fej == null) + { + if (index == 0) + { + Hozzafuz(ertek); + } + else + { + throw new HibasIndexKivetel(); + } + } + else + { + if (index == 0) + { + fej.elozo = new LancElem(ertek, fej, null); + fej = fej.elozo; + n++; + } + else if (index == n) + { + Hozzafuz(ertek); + n++; + } + else + { + LancElem? xd = Indexedik(index).elozo; + xd.kov = new LancElem(ertek, Indexedik(index), xd.kov); + xd.kov.kov.elozo = xd.kov; + n++; + } + } } public void Hozzafuz(T ertek) { - LancElem asd = Indexedik(n); - asd.kov = new LancElem(ertek, null, asd); - n++; + if (Elemszam < 1) + { + fej = new LancElem(ertek, null, null); + n++; + } + else + { + LancElem asd = Indexedik(n-1); + asd.kov = new LancElem(ertek, null, asd); + n++; + } } public T Kiolvas(int index) @@ -179,7 +244,17 @@ public class LancoltLista : Lista public void Torol(T ertek) { - //ez gonixd + LancElem tmp = fej; + while (tmp.kov != null) + { + if (ertek.Equals(tmp.tart)) + { + tmp.elozo.kov = tmp.kov; + tmp.kov.elozo = tmp.elozo; + + } + tmp = tmp.kov; + } } private LancElem Indexedik(int index) { @@ -190,4 +265,61 @@ public class LancoltLista : Lista } return tmp; } + + public IEnumerator GetEnumerator() + { + LancElem tmp = fej; + while(tmp != null) + { + if (tmp.tart != null) + { + yield return tmp.tart; + } + tmp = tmp.kov; + } + } + + IEnumerator IEnumerable.GetEnumerator() + { + LancoltListaBejaro bejaro = new LancoltListaBejaro(this.fej); + return bejaro; + } +} +class LancoltListaBejaro : IEnumerator +{ + LancElem fej; + LancElem aktualisElem; + public T Current + { + get{ return aktualisElem.tart; } + } + + object IEnumerator.Current => Current; + public LancoltListaBejaro(LancElem fej) + { + this.fej = fej; + aktualisElem = fej; + } + + public void Dispose() + { + throw new NotImplementedException(); + } + + public bool MoveNext() + { + if (aktualisElem.kov == null) + { + return false; + } + { + aktualisElem = aktualisElem.kov; + return true; + } + } + + public void Reset() + { + aktualisElem = fej; + } }