手工实现LinkedList2_get查询_节点遍历
public class SxtLinkedList02 {
private Node first;
private Node last;
private int size;
public void add(Object obj) {
Node n1 = new Node(obj);
if(first==null) {
first=n1;
last=n1;
}else {
n1.previous=last;
last.next=n1;
n1.next=null;
last=n1;
}
size++;
}
public String toString() {
StringBuilder sb = new StringBuilder("[");
Node temp = first;
while(temp!=null) {
sb.append(temp.element+",");
temp=temp.next;
}
sb.setCharAt(sb.length()-1, ']');
return sb.toString();
}
public Object get(int index) {
Node temp=null;
if(index<0||index>size-1) {
throw new RuntimeException("索引位置不合法:"+index);
}
if(index<=(size>>1)) {//size>>1除以2
temp=first;
for(int i=0;i<index;i++) {
temp=temp.next;
}
}else if(index>(size>>1)) {
temp=last;
for(int i =size-1;i>index;i--) {
temp=temp.previous;
}
}
return temp.element;
}
public static void main(String[] args) {
SxtLinkedList02 s2 = new SxtLinkedList02();
s2.add("阿狸");
s2.add("卡莎");
s2.add("阿卡丽");
System.out.println(s2);
System.out.println(s2.get(0));
}
}
效果