#include <cstdlib> #include <iostream> using namespace std; typedef struct _NODE { int value; struct _NODE *next; _NODE(int val) : value(val), next(NULL){} }NODE, *PTRNODE; void createList(PTRNODE &head) { PTRNODE curNode = NULL; for(int i=1; i<=10; i++) { if(head == NULL) { head = new NODE(i); curNode = head; } else { PTRNODE temp = new NODE(i); curNode->next = temp; curNode = curNode->next; } } } void findKthNode(PTRNODE head, int k) { if(head == NULL) return; PTRNODE ptr = head, ptrK = head; int count = 0; while(ptrK != NULL) { count++; if(count > k) ptr = ptr->next; ptrK = ptrK->next; } cout << "result is: " << ptr->value << endl; } int main(int argc, char *argv[]) { PTRNODE head = NULL; createList(head); int k; cin >> k; findKthNode(head, k); system("PAUSE"); return EXIT_SUCCESS; } 两个指针, 初始时都指向头结点, 一个指针先往后遍历, 直到走了K步后另一个指针开始往后遍历, 当先走的那个指针到达链表结尾时, 后走的那个指针指向倒数第K个节点...