/**/ /* * Author : roof */ #include < stdio.h > template < typename Elm > struct Node ... { Elm elm; Node* next;} ;template < typename Elm > Node < Elm >* lastPos(Node < Elm >* head, int num) ... { if (num <= 0) return 0; Node<Elm>* move = head; Node<Elm>* pre = move; Node<Elm>* tmp; int cnt = 0; while (move) ...{ tmp = move; while (++cnt <= num) ...{ move = move->next; if (!move) ...{ if (cnt < num && tmp == head) return 0; while (cnt-- > 0) pre = pre->next; return pre; } } pre = tmp; cnt = 0; } return 0;} int main() ... { int ilist[] = ...{1, 2, 3, 4, 5, 6}; Node<int> *head; Node<int> *tmp, *move; for (int i=0; i<6; ++i) ...{ if (0 == i) ...{ head = new Node<int>; head->elm = ilist[0]; move = head; } tmp = new Node<int>; tmp->elm = ilist[i]; move->next = tmp; move = tmp; } move->next = 0; for (int i=0; i<10; ++i) ...{ printf("倒数第%d个 ", i); printf("%d ", (lastPos(head, i) ? lastPos(head, i)->elm : -1)); } getchar(); return 0;}