文章
5
粉丝
0
获赞
0
访问
343
(1)基本设计思想 : 设置两个指针slow和fast初始时都指向头结点, 先让fast指针走k步,然后slow和fast一起走,直到fast指向null,此时slow停留的位置就是链表中导数第k个结点,输出该节点的data值
(2)实现步骤 : 设置两个指针slow和fast初始时都指向头结点, 先让fast指针走k步,然后slow和fast一起走,直到fast指向null,此时如果slow任然指向头结点说明链表中不存在倒数第k个节点返回0,此时slow停留的位置就是链表中导数第k个结点,输出该节点的data值,返回1
(3) 代码实现
数据结构定义
typedef struct LNode {
int data;
struct LNode* link;
}LNode, *Linklist;
int Func(Linklist list, int k){
LNode *fast = list , *slow = list;
for(int i=0 ; i<k ; i++){ // fast指针先走k步
fast = fast->link;
}
while(fast != null){ // fast和slow一起走
fast = fast->link;
slow = slow->link;
}
if (slow==list) { // 如果循环结束后slow没有动说明k值有问题
re...
登录后发布评论
暂无评论,来抢沙发