package com.soto.collection;
/**
* add 和 get方法
*
* @author 王
*
*/
public class SxtLinkedList /*implements List*/ { //双向链表,
private Node first; //(第一个结点)链,获得第一个,就能继续往下找了
private Node last; //(最后一个结点)链表由结点组成,对象放结点里了
private int size;
public void add(Object obj){
Node n = new Node();
if(first == null){
n.setPrevious(null);
n.setObj(obj);
n.setNext(null);
first = n;
last = n;
}else {
//直接在last结点后增加新的结点
n.setPrevious(last);
n.setObj(obj);
n.setNext(null);
last.setNext(n);
last = n;
}
size++;
}
public int size(){
return size;
}
public Object get(int index){
rangeCheck(index);
Node temp = node(index);
if(temp!=null){
return temp.obj;
}
return null;
}
private void rangeCheck(int index){
if(index<0||index>size){
try {
throw new Exception();
} catch (Exception e) {
e.printStackTrace();
}
}
}
public Node node(int index){
Node temp = null;
if(first != null){
temp = first;
for(int i=0;i
temp = temp.next;
}
}
return temp;
}
public void remove(int index){
Node temp = null;
if (first != null) {
temp = first;
for(int i =0 ; i
temp = temp.next;
}
if (temp!=null) {
Node up = temp.previous;
Node down = temp.next;
up.next = down;
down.previous = up;
size--;
}
}
}
public void add(int index, Object obj){
Node temp = node(index);
Node newNode = new Node();
newNode.obj = obj;
if(temp !=null){
Node up = temp.previous;
up.next = newNode; //双向 !!
newNode.previous = up;
newNode.next = temp; //双向!!
temp.previous = newNode;
size++;
}
}
public static void main(String[] args) {
SxtLinkedList list = new SxtLinkedList();
list.add("aaa");
list.add(1, "BBB");
list.add("bbb");
list.add("ccc");
//list.remove(1);
System.out.println(list.get(1));
}
}