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{
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);
// }
}