问题
求单链表倒数第k个结点,并输出。
分析
设置指针p、q同时指向L的首结点,先让p后移k-1次,再让p、q同时后移,直到p指向最后一个结点。这时候q就指向了倒数第k个结点,输出即可。
代码
//求倒数第k个结点
#include<stdio.h>
#include<stdlib.h>
#include"linkedList.h"
int main()
{
node *L;
int flag,k;
L = createListR();
printf("请输入K值:");
scanf("%d",&k);
flag = findKnode(L,k);
}
int findKnode(node *L,int k)//查找倒数第k个结点
{
if(k > L->data)
{
return 0;
}
node *p = L;
node *q = L;
int count = 0;
for(count = 0;count < k-1;count++)
{
p = p->next;
}
while(p->next && q)
{
p = p->next;
q = q->next;
}
printList(L);
printf("\n倒数第%d个结点是:%d",k,q->data);
return 1;
}