鲁棒性是指程序能够判断输入是否合乎规范要求,并对不符合要求的输入予以合理的处理。
提高代码鲁棒性的有效途径是进行防御性编程,是指预见在什么地方可能会出现问题,并为这些可能出现的问题制定处理方式。例如在函数入口添加代码以验证用户输入是否符合要求。
思路一:假设链表有n个节点,那么倒数第k个节点就是从头节点开始的第n-k+1个节点。遍历两次链表,第一次求出链表中节点的个数,第二次找到倒数第k个节点。
若只能遍历链表一次呢?
思路二:定义两个指针,第一个指针从链表头指针开始遍历向前走k-1步,第二个指针保持不动;从第k步开始,第二个指针从头指针开始遍历,当第一个指针到达链表的尾节点时,第二个指针整好指向倒数第k个节点。
class ListNode {
int val;
ListNode next = null;
ListNode(int val) {
this.val = val;
}
}
public class Test22 {
public ListNode FindKthToTail(ListNode head,int k) {
ListNode pAhead=head;
ListNode pBhead=head;
for(int i=1;i<=k-1;i++)
pAhead=pAhead.next;