题解 | 反转链表
反转链表
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%内容,订阅专栏后可继续查看/也可单篇购买
小白专属-牛客题解 文章被收录于专栏
专注于牛客平台编程题题解,文字+图解。内容很细,小白友好系列
vivo公司福利 368人发布