leetcode206. 反转链表(java实现)

版权声明:转载请标明出处哦 https://blog.csdn.net/easy_purple/article/details/85003854

题目:反转一个单链表。

示例:
输入: 1->2->3->4->5->NULL
输出: 5->4->3->2->1->NULL

思路:

  • 迭代:让当前节点的下一个节点是前节点,然后当前节点和下一个节点分别往后移。
  • (递归)

算法

//迭代
/**
 * Definition for singly-linked list.
 * public class ListNode {
 *     int val;
 *     ListNode next;
 *     ListNode(int x) { val = x; }
 * }
 */
class Solution {
    public ListNode reverseList(ListNode head) {
        if(head==null||head.next==null)//如果链表为空或者只有一个值那么返回他自己
            return head;
        ListNode preNode=null;//前一个节点
        ListNode curNode=head;//当前节点
        ListNode nextNode=null;//后一个节点
        while(curNode!=null){
            nextNode=curNode.next;//指向下一个节点
            curNode.next=preNode;//当前节点的next指向前一个节点
            preNode=curNode;//前一个节点后移
            curNode=nextNode;//当前节点后移
        }
        return preNode;
    }
}

猜你喜欢

转载自blog.csdn.net/easy_purple/article/details/85003854