题解 | 反转链表
反转链表
http://www.nowcoder.com/practice/75e878df47f24fdc9dc3e400ec6058ca
解法一:迭代
- 在遍历链表时,将当前节点的next 指针改为指向前一个节点。由于节点没有引用其前一个节点,因此必须事先存储其前一个节点。在更改引用之前,还需要存储后一个节点。最后返回新的头引用。
- 图解:
Java参考代码:
/* public class ListNode { int val; ListNode next = null; ListNode(int val) { this.val = val; } }*/ public class Solution { public ListNode ReverseList(ListNode head) { //pre指针:用来指向反转后的节点,初始化为null ListNode pre = null; //当前节点指针 ListNode cur = head; //循环迭代 while(cur!=null){ //Cur_next 节点,永远指向当前节点cur的下一个节点 ListNode Cur_next = cur.next; //反转的关键:当前的节点指向其前一个节点(注意这不是双向链表,没有前驱指针) cur.next = pre; //更新pre pre = c
剩余60%内容,订阅专栏后可继续查看/也可单篇购买
小白专属-牛客题解 文章被收录于专栏
专注于牛客平台编程题题解,文字+图解。内容很细,小白友好系列