Rendrakás

This commit is contained in:
Lendaia Mirai
2025-10-22 01:22:10 +02:00
parent 1263d5b755
commit 9606f2a888
59 changed files with 227 additions and 5529 deletions

View File

@@ -1,11 +1,6 @@
using OE.ALGA.Paradigmak;
using System;
using System;
using System.Collections;
using System.Collections.Generic;
using System.Collections.Immutable;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
namespace OE.ALGA.Adatszerkezetek
{

325
ALGA/04_EgyszeruLanc.cs Normal file
View File

@@ -0,0 +1,325 @@
using System;
using System.Collections;
using System.Collections.Generic;
using System.Runtime.CompilerServices;
namespace OE.ALGA.Adatszerkezetek;
public class LancElem<T>
{
public T tart;
public LancElem<T>? kov;
public LancElem<T>? elozo;
public LancElem(T tart, LancElem<T>? kov, LancElem<T>? elozo)
{
this.tart = tart;
this.kov = kov;
this.elozo = elozo;
}
}
public class LancoltVerem<T> : Verem<T>
{
LancElem<T>? fej;
LancElem<T>? teteje;
public LancoltVerem()
{
}
public void Felszabadit()
{
}
public bool Ures
{
get { return fej == null; }
}
public T Felso()
{
if (Ures)
{
throw new NincsElemKivetel();
}
else
{
LancElem<T>? tmp = fej;
while (tmp.kov != null)
{
tmp = tmp.kov;
}
teteje = tmp;
return tmp.tart;
}
}
public void Verembe(T ertek)
{
if (Ures)
{
fej = new LancElem<T>(ertek, null, null);
teteje = fej;
}
else
{
teteje.kov = new LancElem<T>(ertek, null, teteje);
teteje = teteje.kov;
}
}
public T Verembol()
{
if (Ures)
{
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 ( vege == null); }
}
public LancoltSor()
{
}
public void Felszabadit()
{
}
public T Elso()
{
return fej.tart;
}
public void Sorba(T ertek)
{
if (Ures)
{
fej = new LancElem<T>(ertek, null, null);
vege = fej;
}
else
{
LancElem<T>? tmp = fej;
while (tmp.kov != null)
{
tmp = tmp.kov;
}
tmp.kov = new LancElem<T>(ertek, null, tmp);
vege = tmp.kov;
}
}
public T Sorbol()
{
if (Ures)
{
throw new NincsElemKivetel();
}
else
{
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>, IEnumerable<T>
{
int n;
LancElem<T>? fej;
public int Elemszam
{
get { return n; }
}
public LancoltLista()
{
}
public void Felszabadit()
{
}
public void Bejar(Action<T> muvelet)
{
for (int i = 0; i < n; i++)
{
muvelet(Indexedik(i).tart);
}
}
public void Beszur(int index, T ertek)
{
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)
{
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)
{
return Indexedik(index).tart;
}
public void Modosit(int index, T ertek)
{
Indexedik(index).tart = ertek;
}
public void Torol(T ertek)
{
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)
{
LancElem<T>? tmp = fej;
for (int i = 0; i < index; i++)
{
tmp = tmp.kov;
}
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;
}
}