手工实现LinkedList3_remove移除节点_getNode方法
public class SxtLinkedList03 {
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) {
if(index<0||index>size-1) {
throw new RuntimeException("索引位置不合法:"+index);
}
Node temp=getNode(index);
return temp.element;
}
public Node getNode(int index) {
Node temp=null;
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;
}
public void remove(int index) {
Node temp = getNode(index);
if(temp!=null) {
Node up = temp.previous;
Node down = temp.next;
if(up!=null) {
up.next=down;
}
if(down!=null) {
down.previous=up;
}
if(index==0) {
first = down;
}
if(index==size-1) {
last=up;
}
}
size--;
}
public static void main(String[] args) {
SxtLinkedList03 s3 = new SxtLinkedList03();
s3.add("阿狸");
s3.add("卡莎");
s3.add("阿卡丽");
System.out.println(s3);
System.out.println(s3.get(0));
s3.remove(1);
System.out.println(s3);
s3.remove(0);
System.out.println(s3);
}
}
效果