题目描述

输入一个链表,反转链表后,输出新链表的表头。
示例:
输入:{1,2,3}
返回:{3,2,1}
数据结构:

  1. public class ListNode {
  2. int val;
  3. ListNode next = null;
  4. ListNode(int val) {
  5. this.val = val;
  6. }
  7. }

解题思路:
image.png
代码:

  1. public class Solution {
  2. public ListNode ReverseList(ListNode head) {
  3. ListNode pre = null;
  4. ListNode tmp = null;
  5. while(head!=null){
  6. //保存head的下一个节点的信息,保证单链表不会因为失去head节点的原next节点而就此断裂
  7. tmp = head.next;
  8. // 开始反转
  9. head.next = pre;
  10. pre = head;
  11. // 移动head
  12. head = tmp;
  13. }
  14. return pre;
  15. }
  16. }