A verem könnyen kialakÃtható egy tömbbÅ‘l vagy egy lista tÃpusból. Az adattárolás szempontjából szinte azonosak. Eltérés csak a hozzáfűzés és kiszedés logikájában van. Az alábbi implementációban az egyszerűség és a dinamikusság végett a verem egy listából lett kialakÃtva.
using System.Collections;
using System.Collections.Generic;
namespace PeldaSajatAdatVerem
{
public class SajatVerem<T>: IEnumerable<T>
{
private List<T> _lista;
public SajatVerem()
{
_lista = new List<T>();
}
public void Push(T value)
{
_lista.Add(value);
}
int Count
{
get { return _lista.Count; }
}
public T Pop()
{
int vege = _lista.Count - 1;
T ret = _lista[vege];
_lista.RemoveAt(vege);
return ret;
}
public T Peak()
{
int vege = _lista.Count - 1;
return _lista[vege];
}
public IEnumerator<T> GetEnumerator()
{
for (int i=_lista.Count-1; i>=0; i--)
{
yield return _lista[i];
}
}
IEnumerator IEnumerable.GetEnumerator()
{
return GetEnumerator();
}
}
}
Tesztelő program:
using System;
namespace PeldaSajatAdatVerem
{
class Program
{
static void Main(string[] args)
{
var verem = new SajatVerem<int>();
verem.Push(11);
verem.Push(12);
verem.Push(13);
verem.Push(14);
verem.Push(15);
Console.WriteLine("A verem elemei: ");
foreach (var item in verem)
{
Console.WriteLine(item);
}
Console.WriteLine("Pop:");
Console.WriteLine(verem.Pop());
Console.ReadKey();
}
}
}
A program kimenete:
$
A verem elemei:
15
14
13
12
11
Pop:
15