反转链表

此博客链接:https://www.cnblogs.com/ping2yingshi/p/13362021.html

题目链接:

反转链表

定义一个函数,输入一个链表的头节点,反转该链表并输出反转后链表的头节点。

示例:

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

题解:

        思路:

                 1.创建一个头节点,使用new ListNode()创建一个新节点数据域定义为0。

                 2.再次创建一个节点,把给的链表的头节点值放入节点的数据域中。

                 3.把第一个节点的next置空。

                 4使用头插法把链表插入新的链表中。(先取给的链表中的节点,后指向新链表的第一个节点,然后把给的节点的指针向下移)

代码:

class Solution {
    public ListNode reverseList(ListNode head) {
        if(head==null)
        return head;
       ListNode p;
       p=new ListNode(0);//头节点
       ListNode q=new ListNode(head.val);
       p.next=q;
       q.next=null;
       head=head.next;
       while(head!=null)
       {
           ListNode temp=head;
           head=head.next;
           temp.next=q;
           q=temp;
           p.next=temp;
       }
      return p.next;
    }
}
原文地址:https://www.cnblogs.com/ping2yingshi/p/13362021.html