创建SlinkList并继承ILinarList
public class SlinkListimplements ILinarList { private Node start; int size; private static class Node { E item; Node next; Node(E item,Node next){ this.item=item; this.next=next; } } public SlinkList(){ start=null; } @Override public boolean add(E item) { if (start == null){ start = new Node (item,null); }else { Node current=start; while (current.next !=null){ current= current.next; } current.next=new Node (item,null); } size++; return true; } @Override public boolean add(int i, E item) { Node current; Node previous; if (i < 0 || i > size) { return false; } Node newonde = new Node (item, null); if (i == 0) { newonde.next = start; start = newonde; size++; } else { current = start; previous = null; int j = 0; while (current != null && j < i) { previous = current; current = current.next; j++; } if (j == i) { previous.next = newonde; newonde.next = current; size++; } } return true; } @Override public E remove(int i) { E oldValue=null; if(isEmpty() || i<0 ||i>size-1){ oldValue=null; } Node current=start; if (i==0){ oldValue=current.item; start=current.next; size--; }else { Node previous=null; int j=1; while (current.next !=null && j<=i){ previous=current; current=current.next; j++; } previous.next=current.next; oldValue=current.item; current=null; size--; } return oldValue; } @Override public int indexOf(E item) { int i=0; if(item == null){ for(Node current=start;current !=null;current=current.next){ if(current.item== null) return i; i++; } }else { for(Node current= start;current !=null;current=current.next){ if(item.equals(current.item)) return i; i++; } } return -1; } @Override public E get(int i) { E item =null; if(isEmpty() || i<0|| i>size-1){ item=null; } Node current=start; int j=0; while (current.next !=null && jcurrent=start;current !=null;){ Node next=current.next; current.item=null; current.next=null; current=next; } start=null; size=0; } @Override public boolean isEmpty() { return size==0; } }
测试单列表:
将测试顺序的代码: ILinarList
替换为: ILinarList



