zoukankan      html  css  js  c++  java
  • 取一个单向链表的某个节点

    思路先遍历整个链表得到长度,然后根据总长度和K得到节点到头结点的距离
    /*
    
    public class ListNode {
    
        int val;
    
        ListNode next = null;
    
     
    
        ListNode(int val) {
    
            this.val = val;
    
        }
    
    }*/
    
    public class Solution {
    
        public ListNode FindKthToTail(ListNode head,int k) {
    
        int length = 0;
    
                 int temp=0;
    
                 ListNode cur = head,curindex=head;
    
                 while(cur!=null){
    
                     cur=cur.next;
    
                     length++;
    
                 }
    
                temp=length-k;
    
               if(head==null || k>length)
    
                     return null;
    
                 while(temp>0){
    
                     curindex=curindex.next;
    
                     temp--;
    
                 }
    
                 return curindex;
    
        }
    
    }
    思路二 利用两个指针 类似于快慢指
    ListNode pre=null,p=null;
    
            //两个指针都指向头结点
    
            p=head;
    
            pre=head;
    
            //记录k值
    
            int a=k;
    
            //记录节点的个数
    
            int count=0;
    
            //p指针先跑,并且记录节点数,当p指针跑了k-1个节点后,pre指针开始跑,
    
            //当p指针跑到最后时,pre所指指针就是倒数第k个节点
    
            while(p!=null){
    
                p=p.next;
    
                count++;
    
                if(k<1){
    
                    pre=pre.next;
    
                }
    
                k--;
    
            }
    
            //如果节点个数小于所求的倒数第k个节点,则返回空
    
            if(count<a) return null;
    
            return pre;
    
     
  • 相关阅读:
    RSA 与 DSA
    atlassian
    Cygwin
    windows下编写的Shell脚本在Linux下运行错误的解决方法
    NSKeyValueObserving(KVO)
    UIBezierPath 的使用介绍
    Objective
    Objective-C 内存管理原则
    Mac OSX 快捷键&命令行总览
    浅析Objective-C字面量
  • 原文地址:https://www.cnblogs.com/winAlaugh/p/5348269.html
Copyright © 2011-2022 走看看