JustKeepSwimming

This commit is contained in:
Lendaia Mirai
2025-10-22 01:06:08 +02:00
parent 793b379c48
commit 1263d5b755

View File

@@ -1,4 +1,6 @@
using System; using System;
using System.Collections;
using System.Collections.Generic;
using System.Runtime.CompilerServices; using System.Runtime.CompilerServices;
namespace OE.ALGA.Adatszerkezetek; namespace OE.ALGA.Adatszerkezetek;
@@ -54,11 +56,13 @@ public class LancoltVerem<T> : Verem<T>
{ {
if (Ures) if (Ures)
{ {
fej.kov = new LancElem<T>(ertek, null, fej); fej = new LancElem<T>(ertek, null, null);
teteje = fej;
} }
else else
{ {
teteje.kov = new LancElem<T>(ertek, null, teteje); teteje.kov = new LancElem<T>(ertek, null, teteje);
teteje = teteje.kov;
} }
} }
@@ -70,9 +74,20 @@ public class LancoltVerem<T> : Verem<T>
} }
else else
{ {
T ertek = Felso(); if (teteje.elozo == null)
teteje.elozo.kov = null; {
return ertek; 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<T> : Sor<T>
LancElem<T>? vege; LancElem<T>? vege;
public bool Ures public bool Ures
{ {
get { return (fej == null && vege == null); } get { return ( vege == null); }
} }
public LancoltSor() public LancoltSor()
{ {
@@ -101,7 +116,8 @@ public class LancoltSor<T> : Sor<T>
{ {
if (Ures) if (Ures)
{ {
fej.tart = ertek; fej = new LancElem<T>(ertek, null, null);
vege = fej;
} }
else else
{ {
@@ -123,14 +139,23 @@ public class LancoltSor<T> : Sor<T>
} }
else else
{ {
T ertek = vege.tart; if (vege.elozo == null)
vege = vege.elozo; {
vege.kov = null; T ertek = vege.tart;
return ertek; vege = null;
return ertek;
}
else
{
T ertek = fej.tart;
fej = fej.kov;
fej.elozo = null;
return ertek;
}
} }
} }
} }
public class LancoltLista<T> : Lista<T> public class LancoltLista<T> : Lista<T>, IEnumerable<T>
{ {
int n; int n;
LancElem<T>? fej; LancElem<T>? fej;
@@ -141,30 +166,70 @@ public class LancoltLista<T> : Lista<T>
} }
public LancoltLista() public LancoltLista()
{ {
} }
public void Felszabadit() public void Felszabadit()
{ {
} }
public void Bejar(Action<T> muvelet) public void Bejar(Action<T> muvelet)
{ {
throw new NotImplementedException(); for (int i = 0; i < n; i++)
{
muvelet(Indexedik(i).tart);
}
} }
public void Beszur(int index, T ertek) public void Beszur(int index, T ertek)
{ {
LancElem<T>? xd = Indexedik(index).elozo; if (fej == null)
xd.kov = new LancElem<T>(ertek, Indexedik(index), xd); {
n++; if (index == 0)
{
Hozzafuz(ertek);
}
else
{
throw new HibasIndexKivetel();
}
}
else
{
if (index == 0)
{
fej.elozo = new LancElem<T>(ertek, fej, null);
fej = fej.elozo;
n++;
}
else if (index == n)
{
Hozzafuz(ertek);
n++;
}
else
{
LancElem<T>? xd = Indexedik(index).elozo;
xd.kov = new LancElem<T>(ertek, Indexedik(index), xd.kov);
xd.kov.kov.elozo = xd.kov;
n++;
}
}
} }
public void Hozzafuz(T ertek) public void Hozzafuz(T ertek)
{ {
LancElem<T> asd = Indexedik(n); if (Elemszam < 1)
asd.kov = new LancElem<T>(ertek, null, asd); {
n++; fej = new LancElem<T>(ertek, null, null);
n++;
}
else
{
LancElem<T> asd = Indexedik(n-1);
asd.kov = new LancElem<T>(ertek, null, asd);
n++;
}
} }
public T Kiolvas(int index) public T Kiolvas(int index)
@@ -179,7 +244,17 @@ public class LancoltLista<T> : Lista<T>
public void Torol(T ertek) public void Torol(T ertek)
{ {
//ez gonixd LancElem<T> 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<T> Indexedik(int index) private LancElem<T> Indexedik(int index)
{ {
@@ -190,4 +265,61 @@ public class LancoltLista<T> : Lista<T>
} }
return tmp; return tmp;
} }
public IEnumerator<T> GetEnumerator()
{
LancElem<T> tmp = fej;
while(tmp != null)
{
if (tmp.tart != null)
{
yield return tmp.tart;
}
tmp = tmp.kov;
}
}
IEnumerator IEnumerable.GetEnumerator()
{
LancoltListaBejaro<T> bejaro = new LancoltListaBejaro<T>(this.fej);
return bejaro;
}
}
class LancoltListaBejaro<T> : IEnumerator<T>
{
LancElem<T> fej;
LancElem<T> aktualisElem;
public T Current
{
get{ return aktualisElem.tart; }
}
object IEnumerator.Current => Current;
public LancoltListaBejaro(LancElem<T> 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;
}
} }