public void swap(String number1, String number2){
// 定義節點
StudentNode t1,t2,t3,t4;
/**
*
* t1:頭節點
* t2:p1
* t3:p2
* t4:p3
*/
t1=t2=t3=t4=null;
StudentNode temp=null;
// 定義一個頭節點
StudentNode p = head;
// 定義計數器 此計數器的作用是用來判斷 number1與number2誰在前
int cnt1=0, cnt2=0;
//遍歷,確定number1與number2的順序
while(p.getNext() != null){
cnt1++;
if(p.getNext().getStu().getNumber().equals(number1)){ // 查找 number1
t1 = p;
t2 = p.getNext();
break;
}
p=p.getNext();
}
p = head;
while(p.getNext() != null){
cnt2++;
if(p.getNext().getStu().getNumber().equals(number2)){ // 查找number2
t3 = p;
t4 = p.getNext();
break;
}
p=p.getNext();
}
/**
* 兩個節點相鄰
* t1是前一個節點
* t2和t3相同
*/
if(cnt1+1 == cnt2){
t2.setNext(t4.getNext());
t1.setNext(t4);
t4.setNext(t2);
}else if(cnt2+1 == cnt1){
// t3,t4,t1,t2
t4.setNext(t2.getNext());
t3.setNext(t2);
t2.setNext(t4);
}else{
t1.setNext(t4);
temp = t4.getNext();
t4.setNext(t2.getNext());
t2.setNext(temp);
t3.setNext(t2);
}
// }else if(cnt1 < cnt2){ // number2 在前面
//
// // t3、t4、t1、 t2
// t3.setNext(t2);
// temp = t2.getNext();
// t2.setNext(t4.getNext());
// t4.setNext(temp);
// t1.setNext(t4);
// }
}