单链表倒数第K个节点的查找和显示

Posted mryangbo

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了单链表倒数第K个节点的查找和显示相关的知识,希望对你有一定的参考价值。

1.使用一个固定长度队列装链表段,当遍历到链表根时,返回队列头元素。

class Node{
    int value;
    Node next;
    public Node(int value){
        this.value=value;
    }
}
public class Danlianbiao {
    public static void main(String[] args) {
        Node node=new Node(1);
        Node node2=node.next=new Node(2);
        Node node3=node2.next=new Node(3);
        Node node4=node3.next=new Node(4);
        Node node5=node4.next=new Node(5);
        Node node6=node5.next=new Node(6);
        Node node7=node6.next=new Node(7);
        Node node8=node7.next=new Node(8);
        System.out.println(getLast(node, 9));
    }
    public static int getLast(Node node,int n){
        LinkedList<Integer> ll=new LinkedList<>();
        Node temp=node;
        while(true){
            if(temp.next==null){
                break;
            }else{
                ll.add(temp.value);
                if(ll.size()>n){
                    ll.removeFirst();
                }
                temp=temp.next;
            }
        }
        return ll.size()==0?temp.value:ll.get(0);
    }
}

 2.使用2个指针,一个指针用作查找最后的元素,另一个指针保持与前一个指针固定间距向前移动。当第一个指针到尾节点是,返回第二个指针指向的元素value;

    public static int getLast1(Node node,int n){
        Node temp=node;
        Node p=node;
        int  count=0;
        while(true){
            if(temp.next==null){
                break;
            }else{
                temp=temp.next;
                count++;
                if(count>=n){
                    p=p.next;
                }
            }
        }
        return p.value;
    }

 

以上是关于单链表倒数第K个节点的查找和显示的主要内容,如果未能解决你的问题,请参考以下文章

2.2 在单链表和双链表中删除倒数第K个节点

线性表练习之Example015-求单链表倒数第 k 个节点

算法总结之 在单链表和双链表中删除倒数第k个节点

[算法]在单链表和双链表中删除倒数第k个结点

单链表的节点数,合并,相交,反转

AcWing32:链表中倒数第k个节点