剑指Offer22:链表中倒数第k个节点

题目:输入一个链表,输出倒数第k个元素,符合大多数人的习惯,最后一个节点,就表示最后一个。

思路:让第一个节点走k-1步,再让第二个节点开始走,这样第一个节点指向最后一个节点的时候,第二个节点就指向,倒数第k个节点。但是,我这里强调一下写代码的健壮性,就是你的代码得应对一下不可预料的情况,你得对错误或者不符合的情况进行排除。

代码:

  class ListNode{

        int value;

        ListNode next;

        public ListNode(int value){
            this.value = value;
        }
    }

    ListNode FindKthToTail(ListNode pListNode,int k){


        if(pListNode==null|| k==0){
            return null;
        }

        ListNode Head = pListNode;
        ListNode Last = null;

        for(int i=0;i<k-1;i++){

            if(Head.next!=null){
                Head = Head.next;
            }else{
                return null;
            }

        }
        Last = pListNode;
        while(Head.next!=null){

            Head = Head.next;

            Last  = Last.next;

        }

        return Last;
        
    }

猜你喜欢

转载自blog.csdn.net/weixin_39137699/article/details/89421941