通过遍历,找到链表中倒数第二个结点

通过遍历,找到链表中倒数第二个结点
一般情况下,我们会遍历一遍,找出cur.next.next=null时的cur值;

但是忽略了两种情况

1.链表无结点
2.链表只有一个结点
我们写代码时要把这两种情况都考虑进去
代码示例:

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);
    }

结果:
在这里插入图片描述

猜你喜欢

转载自blog.csdn.net/weixin_44436675/article/details/112301437