package com.example.nanchen.algorithm;
import com.example.nanchen.entity.ListNode;
public class MyLinkedList {
int size;
ListNode head;
public MyLinkedList() {
size = 0;
head = new ListNode(0);
}
public int get(int index) {
if (index+1 > size) {
return -1;
}
ListNode node = head.next;
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 > this.size) {
return;
} else if (index < 0) {
index = 0;
}
ListNode pre = head;
ListNode newNode = new ListNode(val);
size++;
for (int i = 0; i < index; i++) {
pre = pre.next;
}
newNode.next = pre.next;
pre.next = newNode;
}
public void deleteAtIndex(int index) {
if (index+1 > size) {
return;
}
ListNode pre = head;
ListNode cur = pre.next;
for (int i = 0; i < index; i++) {
pre = cur;
cur = cur.next;
}
pre.next = cur.next;
size--;
}
public void print() {
ListNode node = head;
while (node != null) {
System.out.print(node.val+" ");
node = node.next;
}
System.out.println();
}
}