トラバーサルを介して、リンクリストで最後から2番目のノードを見つけます。
通常の状況では、cur.next.next = nullの場合、curの値を見つけるために1回トラバースします。
しかし、2つのケースは無視されます
1.リンクリストにはノードがありません
。2。リンクリストにはノードが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);
}
結果: