核心思想:
设两个指针p,q,同时指向首结点,然后q后移k个结点,完成后两个指针同时后移,直至q到达表尾,此时p指向倒数第k个结点。
int GetElem(LinkList L,int k){
if(L->next==NULL || k<0){
return 0;
}
LNode *p,*q;
p=L->next;
q=L->next;
// 将q指针向后移动k个位置
for(int i=0;i<k;i++){
if(q==NULL){
return 0;
}
q=q->next;
}
// 同时移动p和q指针,直到p指针到达链表末尾
while(q!=NULL){
q=q->next;
p=p->next;
}
printf("倒数第%d个结点的值为:%d\n",k,p->data);
return 1;
}