I am trying to insert element at the end of a linked list insertAtEnd(). When I debug the code I see a node(0,null) is being inserted as default in the beginning of the insertion.  I think this is causing the problem while iterating through the list.  Any suggestions on how fix this?
package com.ds.azim;
public class Node {
    //Node has 1. Data Element 2. Next pointer
    public int data;
    public Node next;
    //empty constructor 
    public Node(){
        //
    }
    public Node(int data){
        this.data= data;
        this.next = null;
    }
    public Node(int data, Node next){
        this.data = data;
        this.next = next;
    }
}
//*************************************//    
package com.ds.azim;
    public class SingleLinkedList {
        //Single Linked list has a head tail and has a length
        public Node head;
        public Node tail;
        public int length;
        //constructor
        public SingleLinkedList(){
            head = new Node();
            length = 0;
        }
        public void insertAtFirst(int data){
            head = new Node(data,head);
        }
        public void insertAtEnd(int data){
            Node curr = head;
            if(curr==null){
                insertAtFirst(data);
            }else{
                while(curr.next!=null){
                    curr = curr.next;
                }
                curr.next = new Node(data,null);
            }
        }
        public void show(){
            Node curr = head;
            while(curr.next!=null){
                //do something
                System.out.print(curr.data+",");
                curr = curr.next;
            }
        }
        public static void main(String[] args){
            SingleLinkedList sll = new SingleLinkedList();
            sll.insertAtFirst(12);
            sll.insertAtFirst(123);
            sll.insertAtFirst(890);
            sll.insertAtEnd(234);
            sll.show();
        }
    }
 
     
     
     
    