title: C# Memory Allocation & Linked List Implementation
body: <p>I have some questions about how exactly C# implement the linked list class
  first question:</p>
  
  <pre><code>public class Node {  
      int data;  
      Node next;   
  } 
  </code></pre>
  
  <p>it looks like the rather than a linked list, it is a Big object with recursive same class inside</p>
  
  <p>my second question is more specific, for a simple reverse linked list algorithm like below:</p>
  
  <pre><code> public void ReverseList(ref ListNode head){
      if(head ==null || head.next == null) return head;
      ListNode cur = head;
      ListNode prev = null;
      ListNode next = head.next;
      while (cur != null){
          ListNode nextNode = head.next;
          cur.next= prev;
          prev=cur;
          cur=nextNode;
      }
      head = prev ;
  } 
  </code></pre>
  
  <p>isn't cur = head means the "cur" copy ALL  linked list elements?
  And it is much harder to think what was going on in the algorithm.</p>