题解 | #反转链表#
反转链表
https://www.nowcoder.com/practice/75e878df47f24fdc9dc3e400ec6058ca
import java.util.*; /* * public class ListNode { * int val; * ListNode next = null; * public ListNode(int val) { * this.val = val; * } * } */ public class Solution { /** * 代码中的类名、方法名、参数名已经指定,请勿修改,直接返回方法规定的值即可 * * * @param head ListNode类 * @return ListNode类 */ public ListNode ReverseList (ListNode head) { // write code here //已知head,设pre,cur双指针 // head // 👇 // null 1->2->3->4->5->null // 👆 👆 // pre cur ListNode pre=null; ListNode cur=head; while(cur!=null){ // null 1->2->3->4->5->null // 👆 👆 // pre cur(cur为空停下遍历) ListNode temp=cur.next;//记录cur的next,方便后移 // head // 👇 // null 1->2->3->4->5->null // 👆 👆👆 // pre cur temp cur.next=pre; // head // 👇 // null <-1 2->3->4->5->null // 👆 👆 👆 // pre cur temp pre=cur;//先调整pre cur=temp;//再调整cur } return pre;//最后pre为头节点,返回pre,cur为空 } }
c和java区别:(C书写特点:传参struct listnode* head)
1.struct listnode* pre=null
2.while(cur)
3.temp=cur->next
#反转链表##java##c##(双指针)#