1.单链表反转
反转步骤:从头到尾遍历一遍链表,每遍历一个结点,将其放在新链表的最前端。注意链表为空和只有一个结点的情况。
public static Node reverseNode(Node head){
// 如果链表为空或只有一个节点,无需反转,直接返回原链表表头
if(head == null || head.next == null)
return head;
Node reHead = null;
Node cur = head;
while(cur!=null){
Node reCur = cur; // 用reCur保存住对要处理节点的引用
cur = cur.next; // cur更新到下一个节点
reCur.next = reHead; // 更新要处理节点的next引用
reHead = reCur; // reHead指向要处理节点的前一个节点
}
return reHead;
}