1 问题
打印链表倒数第K个节点值。
2 代码实现
#include<stdio.h>//定义一个Node结构体,里面包含了value值和保存了下一个Node的指针(地址)
typedef struct Node
{int value;Node *next;
} Node;//打印链表所有的值,循环遍历一次,因为链表节点的最后一个节点肯定是空,所以循环条件是node==NULL就终止循环
void printList1(Node *head)
{if (head == NULL) {printf("head is NULL\n");return;}while (head != NULL) {printf("value is %d\n", head->value);head = head->next;}
}/**
打印链表的倒数第K个值,比如我们链接是0->1->2->3->4->5->6->NULL,K是2,我们知道这个倒数第二个值是5,我们怎么获取呢?定义2个节点指针,分别是叫快慢指针,我们先让快指针走K步
也就是把快节点指针移动到值为2的地方,
0->1->2->3->4->5->6->NULL
low fast
然后我们一起把low和fast向后移动,直到fast节点指向NULL为止,那么low节点的值就是我们需要找到的倒数第K个值
0->1->2->3->4->5->