求倒数第K个的结点元素
假设 不知道链表的长度
解题思路:
方法很巧妙,定义两个指针,先将一个指针往前走K个结点,然后两个指针再一起走,当第一个指针走完链表的时候,另一个指针恰好走到倒数第K个
求倒数第K个元素的C++代码(链表省略):
//求倒数第K个结点元素
int LinkList::reciprocalK(int k){
Node *p=first;
Node *rear=first;
//先让一个指针走K个结点
for(int i=0;i<k;i++){
rear=rear->next;
}
//两个指针一起走,当一个指针走完链表时,另一个指针恰好走到倒数第K个元素
while(rear!=NULL){
p=p->next;
rear=rear->next;
}
//返回倒数第k个元素结点的数据
return p->data;
}