class MyLinkedList {
private int size;
private ListNode head;
public MyLinkedList() {
this.size = 0;
this.head = new ListNode(-1);
}
public int get(int index) {
if(index >= size || index < 0){
return -1;
}
ListNode node = head;
for(int i = 0 ; i <= index; i++){
node = node.next;
}
return node.val;
}
public void addAtHead(int val) {
addAtIndex(0,val);
}
public void addAtTail(int val) {
addAtIndex(size,val);
}
public void addAtIndex(int index, int val) {
if(index > size){
return;
}
ListNode node = head;
for(int i = 0 ; i < index; i++){
node = node.next;
}
ListNode newNode = new ListNode(val);
newNode.next = node.next;
node.next = newNode;
size++;
}
public void deleteAtIndex(int index) {
if (index >= size){
return;
}
ListNode node = head;
for (int i = 0 ; i < index ; i++){
node = node.next;
}
node.next = node.next.next;
size--;
}
}
头部加一个虚拟节点