zoukankan      html  css  js  c++  java
  • 链表中倒数第k个节点

    public class Reverse{
    	static class LNode{
    		int data;
    		LNode next;
    		public LNode(int data){
    			this.data = data;
    		}
    	}
    	LNode head;
    	LNode current;
    	public void add(int data){
    		if(head == null){
    			head = new LNode(data);
    			current = head;
    		}else{
    		    current.next = new LNode(data);
    			current = current.next;
    		}
    	}
    	public void print(LNode node){
    		LNode temp = node;
    		while(temp!=null){
    			System.out.println(temp.data);
    			temp = temp.next;
    		}
    	}
    	public LNode KNode(LNode head,int k){
    	    LNode before = head;
    	    LNode behind = head;
    	    if(head == null || k==0) return null;
    	    for(int i=1;i<k;i++){
    	        if(before.next != null){
    	            before = before.next;
    	        }else {
    	            return null;
    	        }
    	    }
    	    while(before.next!=null){
    	        before = before.next;
    	        behind = behind.next;
    	    }
    	    return behind;
    	}
    	public static void main(String[] args){
    		
    		Reverse r = new Reverse();
    		for(int i=1;i<10;i++){
    			r.add(i);
    		}
    		//r.print(r.head);
    		//倒数di yi g倒数第一个jie dian
    // 		LNode result = r.KNode(r.head,1);
    // 		r.print(result);
    		//倒数第0个节点
            // LNode result = r.KNode(r.head,0);
            // r.print(result);
            //dao shu倒数倒数第di倒数第第10ge jie dian个节点
            LNode result = r.KNode(r.head,10);
            r.print(result);
    		
    	}
    }
    

      这道题的关键在于:

    1、首先对输入参数进行比较:head=0||k=0都返回为空。

    2、分为两个链表,其中一个指针先走k-1步,然乎再同时往后走,判断条件是:before.next!=null

    3、返回后面的指针。

  • 相关阅读:
    etcd+confd管理nginx
    k8s基础
    nginx配置总结
    Golang相关
    docker基础
    celery结合django使用配置
    常用算法
    python3和paramiko安装
    git使用总结
    Linux系统入门实操经验分享
  • 原文地址:https://www.cnblogs.com/yingpu/p/9193785.html
Copyright © 2011-2022 走看看