mirror of
https://github.com/Lendaia/oe-alga-feladatok.git
synced 2026-04-23 04:16:32 +01:00
JustKeepSwimming
This commit is contained in:
@@ -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;
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
Reference in New Issue
Block a user