剑指offer:(16)代码的鲁棒性:反转链表

来源:互联网 发布:淘宝网韩版式斗篷女装 编辑:程序博客网 时间:2024/05/27 12:21

输入一个链表,反转链表后,输出链表的所有元素。

思路:定义三个指针,分别指向当前遍历的节点、它的前一节点及后一节点,为了防止链表断开。

测试用例:

   功能测试:

          1、输入的链表含有多个节点

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

    特殊输入测试:

            1、链表头节点为null指针。

package cn.com.jianzhioffer;public class Solution16 {public static class ListNode {int val;ListNode next = null;public ListNode(int val) {this.val = val;}}public static ListNode reverseList(ListNode head){ //head为当前节点,如果当前节点为空的话,那就什么也不做,直接返回null;if(head == null) return null;ListNode prReverseHead = null;ListNode pNode = head;ListNode pPre = null;//做循环,如果当前节点不为空的话,始终执行此循环,此循环的目的就是让当前节点从指向next到指向pPre    //如此就可以做到反转链表的效果//先用pNext保存pNode的下一个节点的信息,保证单链表不会因为失去pNode节点的原pNext节点而就此断裂while(pNode!=null){ListNode pNext = pNode.next;if(pNext == null){//已经到了尾部了prReverseHead = pNode;}pNode.next = pPre;pPre = pNode;pNode = pNext;}return prReverseHead;}}


0 0
原创粉丝点击