public static LinkNode reverse(LinkNode current){ LinkNode next=null; LinkNode pre=null; while (current != null){ next = current.next; current.next=pre; pre=current; current=next; } return pre; }
单链表反转需要三个指针
- current: 表示当前指针
- next: 表示下一个指针
- pre: 表示前一个指针
操作过程
首先保存next(临时变量)java next = current.next;
然后把current的next指向pre(堆中的pre内存地址)java current.next=pre;
然后把pre指针指向current, pre(栈上)始终要指向current(相对于next是前一个)java pre=current;
接着下一步继续遍历
java current=next;