package com.bjsxd.test;
public class LinkedList implements List{
private static class Node{
Object data;
Node next;
}
private Node head;
private Node last;
public void add (Object o){
if (head == null){
head = new Node();
head.data = o;
head.next = null;
}else{
Node MyNode = new Node();
MyNode = head;
while (MyNode.next != null){
MyNode = MyNode.next;
}
Node AddNode = new Node();
MyNode.next = AddNode;
AddNode.data = o;
}
}
public void add(int index,Object o){
if(index<0 || o ==null){
throw new IllegalArgumentException("��Ӷ���λ�ó����Ҳ���Ϊ��");
}else if (index == 0 && head == null){
head = new Node();
head.data = o;
head.next = null;
}else if (index > 0 && head == null){
throw new IllegalArgumentException("��Ӷ���λ�ó���");
}else{
Node SrcNode = new Node();
Node AddNode = new Node();
Node SrcNode2 = new Node();
SrcNode = head;
for(int i=0;i<=index;i++){
SrcNode = SrcNode.next;
}
AddNode.next = SrcNode;
AddNode.data = o;
for (int i=0;i<index;i++){
SrcNode2 = SrcNode2.next;
}
SrcNode2.next = AddNode;
}
}
public Object get(int index){
Node SrcNode = new Node();
for (int i=0;i<index;i++){
SrcNode = SrcNode.next;
}
return SrcNode;
}
public Object remove(int index){
Node SrcNode = new Node();
Node TempNode = new Node();
Node MyNode = new Node();
MyNode = head;
int size = 0;
while (MyNode != null){
MyNode = MyNode.next;
size++;
}
if (index < 0 || index > size){
throw new IllegalArgumentException("ɾ������λ�ó���");
}else{
for (int i=0;i<index;i++){
SrcNode = SrcNode.next;
}
TempNode = SrcNode.next;
SrcNode.next = SrcNode.next.next;
return TempNode;
}
}
public int size(){
Node MyNode = new Node();
MyNode = head;
int size = 0;
while (MyNode != null){
MyNode = MyNode.next;
size++;
}
return size;
}
public void addFirst(Object o){
Node MyNode = new Node();
MyNode.data = o;
MyNode.next = head;
head.next = MyNode;
}
public Object removeFirst(){
Node MyNode = new Node();
MyNode.data = head.data;
head.next = head.next.next;
return MyNode;
}
public Object removeLast(){
Node TempNode = new Node();
Node MyNode = new Node();
MyNode = last;
TempNode = head;
int size = 0;
while (TempNode != null){
TempNode = TempNode.next;
size++;
}
for (int i = 0;i < size-1; i++){
TempNode = TempNode.next;
}
TempNode.next = null;
return MyNode;
}
}