题目描述:
查找链表倒数第k个位置上的结点(带头结点)
算法思想:
找到同时移动的位置
核心代码:
int find_k(LNode* &L,int k)
{
if(k<0)//还得判断k有没有大于链表长度
return 0;
LNode *p,*q;
p=q=L->next;
while((--k)!=0)
{
q=q->next;
}
while(q->next!=NULL)//这里的判断条件不应该是while(q!=NULL)
{
p=p->next;
q=q->next;
}
printf("%d",p->data);
return 1;
}
int find_k_1(LNode* &L,int k)
{
if(k<0)//还得判断k有没有大于链表长度
return 0;
LNode *p,*q;
p=q=L->next;
int Count=0;//计数判断k有没有大于链表长度
while(q!=NULL&&(--k)!=0)
{
q=q->next;
}
if(q==NULL)
return 0;
while(q->next!=NULL)//这里的判断条件不应该是while(q!=NULL)
{
p=p->next;
q=q->next;
}
printf("%d",p->data);
return 1;
}