Through traversal, find the second-to-last node in the linked list

Through traversal, find the penultimate node in the linked list.
Under normal circumstances, we will traverse once to find the value of cur when cur.next.next=null;

But two cases are ignored

1. The linked list has no node.
2. The linked list has only one node. When
we write code, we must take these two cases into consideration.
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 findLastNode() {
    
    
       Node cur = this.head;
       while (cur.next != null) {
    
    
           cur = cur.next;
       }
       return cur;
   }
    public  Node findLastTwoNode() {
    
    
        if (this.head == null)//情况1
            System.out.println("链表为空");
        if (this.head.next == null)//情况2
            System.out.println("链表中有一个结点");
        Node cur = this.head;
        while (cur.next.next != null) {
    
    
            cur = cur.next;
        }
        return cur;
    }
    public static void main(String[] args) {
    
    
        MyLinkedList myLinkedList = new MyLinkedList();
        myLinkedList.createLinked();
        myLinkedList.display();
        Node ret = myLinkedList.findLastTwoNode();
        System.out.println(ret.val);
    }

result:
Insert picture description here

Guess you like

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