Q:

Generics params Richter code

I learn generics. Richter LinkedList. I have questions about class initialization.
Added: There is 2 constructor. First with null. How we can do it with 1 one constructor? 
internal sealed class Node<T> 
{
    public T m_data;
    public Node<T> m_next;

    public Node(T data) : this(data, null) 
    {
    }

    public Node(T data, Node<T> next) 
    {
        m_data = data; m_next = next;
    }

    public override String ToString() 
    {
        return m_data.ToString() + ((m_next != null) ? m_next.ToString() : String.Empty);
    }
}

What is?
public Node(T data) : this(data, null) 
{
}

especially (T data)
Why I can do?
 public Node(T data, Node<T> next)
        {
            m_data = data; m_next = null;
        }

But I can not do
 public Node(T data, Node<T> next)
        {
            m_data = null; m_next = next;
        }

A:

How we can do it with 1 one constructor?

You can use optional parameters in the constructor
internal sealed class Node<T> {
    public T m_data;
    public Node<T> m_next;

    public Node(T data, Node<T> next = null) {
        m_data = data;
        m_next = next;
    }

    public override String ToString() {
        return m_data.ToString() + ((m_next != null) ? m_next.ToString() : String.Empty);
    }
}

Which would allow for usage like
var node1 = new Node<string>("hello world"); //the same as (data, null)
var node2 = new Node<string>("how are you", node1);

What is public Node(T data) : this(data, null) ?

Its called constructor chaining/overloading. 
Take a look at C# constructor chaining? (How to do it?)

