• 链表中倒数第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、返回后面的指针。

  • 相关阅读:
    php面试题-2
    排序算法-1
    php面试题-1
    ES6基础-4
    ES6基础-3
    mysql优化-1
    ES6基础-2
    vuecli 项目进行gzip压缩 使页面加载速度更快
    vueCli3 项目创建时,git bash 箭头选择无效问题
    gulp4简单用法和问题总结
  • 原文地址:https://www.cnblogs.com/yingpu/p/9193785.html
Copyright © 2020-2023  润新知