http://zhedahht.blog.163.com/blog/static/2541117420072114478828/
这道题的代码有大量的指针操作。在软件开发中,错误的指针操作是大部分问题的根源。因此每个公司都希望程序员在操作指针时有良好的习惯,比如使用指针之前判断是不是空指针。这些都是编程的细节,但如果这些细节把握得不好,很有可能就会和心仪的公司失之交臂。
struct Node { int key; Node *next; }; Node* findkth2tail(Node *head, unsigned int k) { if (head == NULL) return NULL; Node *p1, *p2; p1 = head, p2 = NULL; for (int i = 0; i < k; ++i) { if (p1->next != NULL) p1 = p1->next; else return NULL; } p2 = head; while (p1->next != NULL) { p1 = p1->next; p2 = p2->next; } return p2; }