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->