LeetCode:Reverse Linked List

Reverse a singly linked list.

思路:

注意几个地方:

变换前:   h  ---->    i   ---->    j

变换后:   h  <----    i   <----    j

1 以i节点为当前节点。假设i节点前面的节点都实现了逆转。现在已i节点为参考对象。注意需要用一个新定义的ListNode去记录下i的下一个节点j。因为如果单纯的将j的下一节点指向h,会导致i , j 之间断裂。

2 使用循环迭代的方法得到当前节点的前一结点是很常用的得到前一结点的方法。

/**
 * Definition for singly-linked list.
 * public class ListNode {
 *     int val;
 *     ListNode next;
 *     ListNode(int x) { val = x; }
 * }
 */
public class Solution {
    public ListNode reverseList(ListNode head) {
        ListNode pReverseHead = null;
        ListNode pNext = null;
        ListNode pPre = null;
        ListNode pNode = head;
        while(pNode != null) {
            pNext = pNode.next;
            if(pNext == null) {
                pReverseHead = pNode;
            }
            pNode.next = pPre;
            pPre = pNode;
            pNode = pNext;
            
        }
        return pReverseHead;
    }
}

每次写完代码,都需要用几类测试用例对代码进行功能测试。

1 输入的链表头指针为Null。

2 输入的链表只有一个节点。

3 输入的链表有多个节点。

只有确信代码能够通过这3类测试用例的测试,才能保证代码的正确性。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值