SoFunction
Updated on 2025-03-08

Detailed explanation of custom generic linked list classes in c#


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 = ;
            }
        }
    }