1、单链表翻转
重点:三个变量、当前节点的下一个节点 指向头节点的下一个节点
public static void reverseList(Node head){ //如果链表为空 则返回 if (head.next == null){ return; } //遍历到的当前节点 Node cur = head.next; //当前节点的下一个节点,后移使用 Node next = null; //定义新的链表头,目的是 将遍历出来的节点,插入到 新头节点 与 新头结点next节点的中间 Node newHead = new Node(0); //为null说明遍历到了链表的末尾 while (cur!=null){ //将当前节点的下一个节点 保存到next变量 next = cur.next; //将当前节点的下一个节点 指向头节点的下一个节点 //这样做之后,当前节点就放到了新链表的头部(新头节点之后) //即当前节点的next有包含了新链表的所有node(不含头节点) cur.next = newHead.next; //新链表头结点的next 指向当前节点 newHead.next = cur; //cur当前节点后移 继续向下遍历 cur = next; } //将老链表头指向新链表头 实现翻转 head.next = newHead.next; }
浙公网安备 33010602011771号