/**
* Created by Great on 2017/2/24.
*/
public class LinkList {
private class Node{
Node next;
int data;
}
private Node rear;
private Node top;
private int size = 0;
public void add(int e) {
if (rear == null) {
rear = new Node();
top = rear;
}else {
rear.next = new Node();
rear = rear.next;
}
rear.data = e;
++size;
}
public Integer getReciprocal(int count) {
if (top == null || count < 1) return null;
Node node = top;
int size = 0;
while( node.next != null) {
node = node.next;
size++;
}
if (size+1 < count) return null;
return get(size+1-count);
}
public Integer get(int i) {
if (i < 0 || i >= size) return null;
return getNode(i).data;
}
public void remove(int i) {
if (i < 0 || i >= size) return;
if (i == 0 ) {
top = top.next;
return;
}
if (i == size - 1) {
getNode(i - 1).next = null;
}
Node front = getNode(i - 1);
Node back = getNode(i + 1);
front.next = back;
--size;
}
private Node getNode(int i) {
if (i < 0 || i >= size) return null;
Node node = top;
for (int j = 0; j < size; j++) {
if (j == i) return node;
node = node.next;
}
return null;
}
public int size() {
return size;
}
public boolean isEmpty() {
return size == 0;
}
}