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.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;
|
||||
}
|
||||
}
|
||||
|
||||
@@ -70,9 +74,20 @@ public class LancoltVerem<T> : Verem<T>
|
||||
}
|
||||
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<T> : Sor<T>
|
||||
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
|
||||
{
|
||||
@@ -123,14 +139,23 @@ public class LancoltSor<T> : Sor<T>
|
||||
}
|
||||
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<T> : Lista<T>
|
||||
public class LancoltLista<T> : Lista<T>, IEnumerable<T>
|
||||
{
|
||||
int n;
|
||||
LancElem<T>? fej;
|
||||
@@ -141,30 +166,70 @@ public class LancoltLista<T> : Lista<T>
|
||||
}
|
||||
public LancoltLista()
|
||||
{
|
||||
|
||||
|
||||
}
|
||||
public void Felszabadit()
|
||||
{
|
||||
|
||||
|
||||
}
|
||||
|
||||
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);
|
||||
n++;
|
||||
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);
|
||||
asd.kov = new LancElem<T>(ertek, null, asd);
|
||||
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;
|
||||
}
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user