Tuesday, July 19, 2011

How to create a generic type Single Linked List using C#.NET

// type parameter T in angle brackets
public class GenericList
{
// The nested class is also generic on T.

private class Node
{
// T used in non-generic constructor.
public Node(T t)
{
next = null;
data = t;
}


private Node next;
public Node Next
{
get { return next; }
set { next = value; }
}

// T as private member data type.
private T data;

// T as return type of property.
public T Data
{
get { return data; }
set { data = value; }
}
}


private Node head;
// constructor
public GenericList()
{
head = null;
}

// T as method parameter type:
public void AddHead(T t)
{
Node n = new Node(t);
n.Next = head;
head = n;
}



public IEnumerator GetEnumerator()
{
Node current = head;
while (current != null)
{
yield return current.Data;
current = current.Next;
}
}
}


static void Main(string[] args)
{


// int is the type argument
GenericList list = new GenericList();

for (int x = 0; x < 10; x++)
list.AddHead(x);

foreach (int i in list)
System.Console.Write(i + " ");


System.Console.WriteLine("\nDone");
}

No comments:

Post a Comment