/*
public class ListNode {
int val;
ListNode next;
public ListNode(int val) {
this.val = val;
this.next = null;
}
}
*/
// Implementation for Singly Linked List
public class SinglyLinkedList {
ListNode head;
ListNode tail;
public SinglyLinkedList() {
head = new ListNode(-1);
tail = head;
}
public void insertEnd(int val) {
tail.next = new ListNode(val);
tail = tail.next;
}
public void remove(int index) {
int i = 0;
ListNode curr = head;
while (i < index && curr != null) {
i++;
curr = curr.next;
}
// Remove the node ahead of curr
if (curr != null) {
curr.next = curr.next.next;
}
}
public void print() {
ListNode curr = head.next;
while (curr != null) {
System.out.print(curr.val + " -> ");
curr = curr.next;
}
System.out.println();
}
}