public void swap(String number1, String number2){
// 定義節點
StudentNode t1,t2,t3,t4;
/**
* t1
* t2
* t3
* t4
*/
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();
}
if(cnt1 > cnt2){ // number1 在前面
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);
}
}
java數據結構初學(記錄)單鏈表交換兩節點(1)可與之前寫的進行對比(代碼優化)——如果後續徹底搞明白後將精煉此部分內容,刪除部分內容
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.