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.Collections;
using System.Collections.Generic;
using System.Runtime.CompilerServices;
namespace OE.ALGA.Adatszerkezetek;
@@ -54,11 +56,13 @@ public class LancoltVerem<T> : Verem<T>
{
if (Ures)
{
fej.kov = new LancElem<T>(ertek, null, fej);
fej = new LancElem<T>(ertek, null, null);
teteje = fej;
}
else
{
teteje.kov = new LancElem<T>(ertek, null, teteje);
teteje = teteje.kov;
}
}
@@ -69,20 +73,31 @@ public class LancoltVerem<T> : Verem<T>
throw new NincsElemKivetel();
}
else
{
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;
}
}
}
}
public class LancoltSor<T> : Sor<T>
{
LancElem<T>? fej;
LancElem<T>? vege;
public bool Ures
{
get { return (fej == null && vege == null); }
get { return ( vege == null); }
}
public LancoltSor()
{
@@ -101,7 +116,8 @@ public class LancoltSor<T> : Sor<T>
{
if (Ures)
{
fej.tart = ertek;
fej = new LancElem<T>(ertek, null, null);
vege = fej;
}
else
{
@@ -122,15 +138,24 @@ public class LancoltSor<T> : Sor<T>
throw new NincsElemKivetel();
}
else
{
if (vege.elozo == null)
{
T ertek = vege.tart;
vege = vege.elozo;
vege.kov = null;
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;
LancElem<T>? fej;
@@ -150,22 +175,62 @@ public class LancoltLista<T> : Lista<T>
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)
{
LancElem<T>? xd = Indexedik(index).elozo;
xd.kov = new LancElem<T>(ertek, Indexedik(index), xd);
if (fej == null)
{
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)
{
LancElem<T> asd = Indexedik(n);
if (Elemszam < 1)
{
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)
{
@@ -179,7 +244,17 @@ public class LancoltLista<T> : Lista<T>
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)
{
@@ -190,4 +265,61 @@ public class LancoltLista<T> : Lista<T>
}
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;
}
}