class Node {
private Object data;
private Node next;
Node(Object data) {
this(data, null);
}
Node(Object data, Node next) {
this.data = data;
this.next = next;
}
Object getData() {
return data;
}
Node getNext() {
return next;
}
void setData(Object data) {
this.data = data;
}
void setNext(Node next) {
this.next = next;
}
}
public class LinkedList {
private Node head;
public LinkedList() {
head = null;
}
private Node getHead() {
return head;
}
private void setHead(Node node) {
head = node;
}
public Object getFirst() throws NullPointerException {
return getHead().getData();
}
public boolean isEmpty() {
return getHead() == null;
}
public Object get(int index) throws NullPointerException {
Node current = getHead();
for (int i = 0; i < index; ++i) {
current = current.getNext();
}
return current.getData();
}
public boolean add(Object data) {
if (isEmpty()) {
setHead(new Node(data));
}
else {
Node current = getHead();
while (current.getNext() != null) {
current = current.getNext();
}
current.setNext(new Node(data));
}
return true;
}
public void addFirst(Object data) {
setHead(new Node(data, getHead());
}
public Object remove(int index) throws NullPointerException {
Object temp;
if (index == 0) {
temp = getHead().getData();
setHead(getHead().getNext());
}
else {
Node current = getHead();
for (int i = 0; i < index - 1; ++i) {
current = current.getNext();
}
temp = current.getNext().getData();
current.setNext(current.getNext().getNext());
}
return temp;
}
| Previou page | Next page |