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: