/**/
/*
* 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;
}
* 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;
}