//定义节点
class Node{
int value;
Node next;
public Node(int val){
value = val;
}
}
class MyLinkedList {
//链表节点数量
int size;
//定义头节点
Node head;
//链表构造方法,new一个链表时,只创建一个头节点,但是不算入节点数量
public MyLinkedList() {
size = 0;
head = new Node(0);
}
public int get(int index) {
if(index< 0){
return -1;
}
if(index >= size){
return -1;
}
Node current = head;
//直接找到index位置的节点
for(int i=0;i<index+1;i++){
current = current.next;
}
return current.value;
}
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< 0){
index = 0;
}
if(index > size){
return;
}
++size;
Node previous = head;
//找到index位置之前的一个节点
for(int i=0;i<index;i++){
previous = previous.next;
}
//新建一个节点
Node newNode = new Node(val);
newNode.next = previous.next;
previous.next = newNode;
}
public void deleteAtIndex(int index) {
if(index< 0){
return;
}
if(index >= size){
return;
}
size--;
Node previous = head;
//找到index位置之前的一个节点
for(int i=0;i<index;i++){
previous = previous.next;
}
previous.next = previous.next.next;
}
}