今天面试被问到数据结构链表:查找链表的倒数第N个元素 第一种方法是遍历链表,记录链表的长度total,再次遍历链表,第total – N – 1个节点就是查找结果,需要遍历两次链表
第二种方法是:使用两个指针,通过移动指针,遍历一次链表,p指针首先移动n-1步,然后p和q同时移动,知道p.next == null,此时p所指向的节点就是所求
Node p = head;
Node q = head;
while(--n != 0 && q != null) {
q = q.next;
}
if (q == null)
return null; // n大于链表长度
while(q.next != null) {
q = q.next;
p = p.next;
}
return p;