public ListNode removeNthFromEnd (ListNode head, int n) {
// write code here
Stack<ListNode> stack = new Stack();
ListNode tmp, nhead;
nhead = new ListNode(-1);
nhead.next = head;
tmp = nhead;
while(tmp!=null){
stack.add(tmp);
tmp = tmp.next;
}
ListNode delete = null;
ListNode last;
for(int i=0 ;i<n;i++){
delete = stack.pop();
}
last = stack.pop();
last.next=delete.next;
return nhead.next;
}