输入一个链表,输出该链表中的倒数第k个结点。
思想:
- 双引用遍历,定义两个引用p1,p2,第一个引用比第二个引用先走k步,则p1,p2一直相差k个结点,当p1遍历结束时,p2就是倒数第k个结点。
- 注意存在该链表中可能根本就没有k个结点的情况,此时返回空。
具体实现:
- 如果链表为空,直接返回null;
- 定义变量
(1)定义变量 cur 表示当前变量;cur = head;
(2)进行双引用遍历要定义两个新的引用 p1,p2
p1 = head;
p2 = head; - 让p1先走k个结点
(1)如果原链表中没有k个结点,直接返回null;return null;
(2)如果有大于等于k个结点,p1一直往前走;p1 = p1.next; - p1走过k个结点以后,p1,p2开始同时往前走,即同时进行遍历
(1)遍历的条件是p2为空,即