Through traversal, find the Nth node in the linked list

Through traversal, find the Nth node in the linked list

Code example:

class Node {
    
    
    public int val;
    public Node next;

    public Node(int val) {
    
    
        this.val = val;
    }
}
public  class MyLinkedList {
    
    

    public Node head;//普通引用,目的是让head一直指向当前列表的头

    public void createLinked() {
    
    
        this.head = new Node(12);
        Node node2 = new Node(22);
        Node node3 = new Node(32);
        Node node4 = new Node(42);
        head.next = node2;
        node2.next = node3;
        node3.next = node4;
    }

    public void display() {
    
    //打印一个链表
        Node cur = this.head;
        while (cur != null) {
    
    
            System.out.print (cur.val +" ");
            cur = cur.next;
        }
        System.out.println();
    }
    public  Node findN(int n) {
    
    
        if (this.head == null){
    
    
            System.out.println("链表为空");
            return null;
        }
        if (n <= 0){
    
    
            System.out.println("n的值不合理");
            return null;
        }
        if (n >size()){
    
    
            System.out.println("n太大了");
            return  null;
        }
        Node cur = this.head;
         int count =1;
            while (count != n ) {
    
    
            cur = cur.next;
            count ++;
        }
        return cur;
    }
    //得到单链表的长度
    public int size(){
    
    
        Node cur = this.head;
        int count =0;
        while (cur != null ) {
    
    
            cur = cur.next;
            count++;
        }
        return count;
    }
    public static void main(String[] args) {
    
    
        MyLinkedList myLinkedList = new MyLinkedList();
        myLinkedList.createLinked();
        myLinkedList.display();
        System.out.println("===================");
        int n=4;
        Node ret = myLinkedList.findN(n);
        System.out.println("第" +n+ "个结点是" + ret.val);
    }

result:
Insert picture description here

to sum up:

1. Since count and n are compared in the while loop, count starts from 1.
2. To consider the three factors of ① whether the linked list is empty, ② whether the value of n is reasonable, and ③ whether n is greater than the length of the linked list.

Guess you like

Origin blog.csdn.net/weixin_44436675/article/details/112320840