package com.coding.basic;
public class LinkedListTest implements ListTest {
private Node headNode;
private Node tailNode;
class Node{
private Object obj;
// private Node proNode;
private Node nextNode;
public Node(Object obj) {
this.obj = obj;
}
}
public void add(Object o) {
if(headNode==null){
headNode=new Node(o);
tailNode=headNode;
}else{
tailNode.nextNode=new Node(o);
tailNode=tailNode.nextNode;
}
}
public void add(int index, Object o) {
Node newNode=new Node(o);
Node node=headNode;
for(int i=0;i<index-1;i++){
node=node.nextNode;
}
newNode.nextNode=node.nextNode;
node.nextNode=newNode;
}
public Object get(int index) {
Node node=headNode;
for(int i=0;i<index;i++){
node=node.nextNode;
}
return node.obj;
}
public Object remove(int index) {
Node node=headNode;
if(index==0){
return node.obj;
}else{
for(int i=0;i<index-1;i++){
node=node.nextNode;
}
Object obj=node.nextNode.obj;
node.nextNode=node.nextNode.nextNode;
return obj;
}
}
public int size() {
int length=1;
Node node=headNode;
if(headNode==null){
return 0;
}else{
while(node!=tailNode){
node=node.nextNode;
length++;
}
return length;
}
}
public Object removeFirst(){
Object obj = headNode.obj;
headNode=headNode.nextNode;
return obj;
}
public Object removeLast(){
int length=size();
Object obj = tailNode.obj;
Node node=headNode;
if(length==0){
return null;
}else if(length==1){
return headNode;
}else{
for(int i=0;i<length-2;i++){
node=node.nextNode;
}
tailNode=node;
return obj;
}
}
}