查找链表的倒数第k个节点,经典的双指针,p指针先移动k个结点,q再开始移动,这样当p尾部时,q与p相距k个结点,是为倒数第k个结点。
typedef int ElemType;
typedef struct LNode {
ElemType data;
struct LNode* next;
} LNode, *LinkList;
int search_k(LinkList L, int k){
LNode *p=L->next,*q=L->next;
int count =0;
while(p){
if(count<k) count++;//p,k次移动
else q=q->next;
p=p->next;
}
if(count<k) return 0;//k大于表长
else{
printf("%d",q->data);
return 1;
}
}