/**
* 用链表实现 王道P41 T22
*
* ①算法思想:
* 首先让第一个指针到达正数第 k 个位置,然后再另第二个指针从头开始和第一个指针一起跑,
* 当第一个指针空时,第二个指针就到达了倒数第 k 个位置。
* 补充:如果只知道 k 是中间的位置,那么就用快慢指针。
*
* ②数据结构:
* typedef struct LNode{
int data;
struct LNode *next;
}LNode,*LinkList;
*
* ③算法设计
*/
#include <stdio.h>
#include <iostream>
typedef struct LNode{
int data;
struct LNode* next;
}LNode,*LinkList;
int FindDk(LinkList L,int k){
LinkList p = L -> next;
int count = 1;
while(count++ <= k){
p = p -> next;
}
LinkList q = L -> next;
while(p){
p = p -> next;
q = q -> next;
}
return q -> data;
}
//补充
int FindMid(LinkList L){
LinkList fast = L -> next;
LinkList slow = L -> next;
while(fast && fast -> next){
fast = fast -> next -> next;
slow = slow -> next;
}
return slow -> data;
}
07-12
133
07-12
59
12-15
925