剑指offer 15:反转链表-- Java实现

剑指offer每日一题算法题(java解法)

方便日后复习,从今天开始。

算法之行始于足下

[编程题]反转链表-- Java实现

------------------------------------------------------------------------------------------------------
题目描述
输入一个链表,反转链表后,输出新链表的表头
解题思路:
1.先判断链表是否为空
2.不为空的话,创建两个指针,p和q一个p拿来存分离的节点指针,和一个q来存原链表.
3.1>2>3>4>5 被分为1 2>3>4>5 head为q(1)的next和q,p同为1,
然后第二遍为q去等于head然后搭上2>3>4>5 ,循环head为q(2)的next
然后q的next等于p,就等于把q跟p的链表头指针连接上,再把p=q,这样下次q再关联过来又是头指针

/*
public class ListNode {
    int val;
    ListNode next = null;
    ListNode(int val) {
    this.val = val;
    }
}*/
public class Solution {
    public ListNode ReverseList(ListNode head) {
        if(head==null){
            return null;
        }
        ListNode p=null;
        ListNode q=null;
        while(head!=null){
            q=head;
            head=q.next;
            q.next=p;
            p=q;
        }
        return p;
    }
}

发布了52 篇原创文章 · 获赞 10 · 访问量 1540

猜你喜欢

转载自blog.csdn.net/jiohfgj/article/details/103076542