版权声明:如需转载,请注明出处 https://blog.csdn.net/baidu_41813368/article/details/83868580
整体思路
1.双指针
指针A在前面第K个,指针B在指针A的后面
2.当指针A指向NULL的时候,就找到了倒数第K个结点
代码部分
// 遍历一次,找到倒数第 k 个结点(k从1开始)
void FindK(SListNode *pFirst, int k) {
k = 2;
SListNode *forward = pFirst;
SListNode *backward = pFirst;
while (k--) {
forward = forward->Next;
}
while(forward != NULL) {
forward = forward->Next;
backward = backward->Next;
}
printf("%d\n", backward->data);
}
void TestFindK() {
SListNode *First = NULL;
SListPushBack(&First, 1);
SListPushBack(&First, 2);
SListPushBack(&First, 3);
SListPushBack(&First, 4);
SListPushBack(&First, 5);
SListPushBack(&First, 6);
FindK(First,2);
}