对于“访问单向链表倒数第k个结点”,比较成熟的算法是快慢指针,即定义两个指针,一个指针先走k个结点,之后两个指针再一起走,从而拿到倒数第k个结点。
快慢指针算法如下:
LinkNode* findNode(LinkNode* head){//找到单向链表倒数第2个结点,快慢指针
LinkNode* temp = head->next->next;LinkNode* result = head;while (temp != NULL){result = result->next;temp = temp->next;}return result;
}
普通算法,需要循环两次
LinkNode* findNode2(LinkNode* head){//找到单向链表倒数第2个结点,循环两次