A sor szintén 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 itt is csak a hozzáfűzés és kiszedés logikájában van.
using System.Collections;
using System.Collections.Generic;
namespace PeldaSajatAdatSor
{
public class SajatSor<T>: IEnumerable<T>
{
private List<T> _lista;
public SajatSor()
{
_lista = new List<T>();
}
//elem beillesztése a sor végére
public void Enqueue(T item)
{
_lista.Add(item);
}
//elem kinyerése a sor elejéről
public T Dequeue()
{
T item = _lista[0];
_lista.RemoveAt(0);
return item;
}
//sor elején álló elem megtekintése
public T Peek()
{
return _lista[0];
}
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 PeldaSajatAdatSor
{
class Program
{
static void Main(string[] args)
{
var sor = new SajatSor<int>();
sor.Enqueue(11);
sor.Enqueue(12);
sor.Enqueue(13);
sor.Enqueue(14);
sor.Enqueue(15);
Console.WriteLine("A sor elemei: ");
foreach (var item in sor)
{
Console.WriteLine(item);
}
Console.WriteLine("Dequeue:");
Console.WriteLine(sor.Dequeue());
Console.WriteLine(sor.Dequeue());
Console.WriteLine(sor.Dequeue());
Console.WriteLine(sor.Dequeue());
Console.ReadKey();
}
}
}
A program kimenete:
$
A sor elemei:
15
14
13
12
11
Dequeue:
11
12
13
14