通过遍历,找到链表中倒数第二个结点
一般情况下,我们会遍历一遍,找出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);
}
结果: