public class GenericList<T>
{
private class Node
{
//Current node value
private T data;
public T Data
{
get { return data; }
set { data = value; }
}
//The next node of the node
private Node next;
public Node Next
{
get { return next; }
set { next = value; }
}
//The previous node of the node
private Node last;
public Node Last
{
get { return last; }
set { last = value; }
}
public Node(T t)
{
data = t;
next = null;
}
}
private Node firstNode;
private Node lastNode;
public void AddNode(T t)
{
Node node = new Node(t);
= lastNode;
if (lastNode != null)
= node;
lastNode = node;
if (firstNode == null)
{
firstNode = node;
}
}
//Iteration on custom generic collections
//This interface must be implemented
public IEnumerator<T> GetEnumerator()
{
Node current = firstNode;
while (current != null)
{
//yield return expression is returned as an enumeration object
yield return ;
current = ;
}
}
}