#include <cstdlib> #include <cstdio> typedef struct Node { int num; struct Node* next; } LNode, *LinkList; void List_Create(LinkList &L, int N) { LNode* s; int i; L = (LinkList)malloc(sizeof(LNode)); L->next = L; L->num = -1; for(i=N; i>0; i--){ s=(LNode*)malloc(sizeof(LNode)); s->num = i; s->next = L->next; L->next = s; } } int main() { int m; int N; int c; scanf("%d", &m); while (m--) { scanf("%d", &N); LinkList L; LNode *p, *q; List_Create(L, N); q = L; //注意起始位置 while(L->next != L){ c = 3; // 找到3号结点 while(c--){ p = q; q = q->next; // 去除头结点干扰 if(q->num == -1){ p = q; q = q->next; } } printf("%d ", q->num); p->next = q->next; free(q); q = p; } printf("\n"); } }