實現單鏈表的反轉:
1)棧實現:鏈表壓入棧中,依次彈出,順序反轉。時間複雜度O(n),空間複雜度O(n);
2)借用三個指針:三個指針,前兩個用來反轉節點指向,第三個記錄後一個節點,遍歷整個鏈表,時間複雜度O(n),空間複雜度O(1)
//返回一個實現了反轉的鏈頭
public static LinkNode reverseLink(LinkNode pNode){
//定義三個指針,第一個和第二個指針用來交換指向(即反轉),
//第三個指針記錄下一個指針
LinkNode first=pNode;
LinkNode secend=pNode.nextNode;
LinkNode third=null;
while(secend!=null){
third=secend.nextNode;
secend.nextNode=first;
first=secend;
secend=third;
}
pNode.nextNode=null;
return first;
}