#include <stdio.h>
#include <iostream>
#include <stdlib.h>
using namespace std;
struct Node{
int num;
Node * next;
};
void deleteNode(Node *p);
int main()
{
int m,N;
cin >> m;
for(int i=0;i<m;i++)
{
cin >> N;//要产生N个节点
Node *p = (Node *)malloc(sizeof(Node));
Node *q = p;
p->num = 1;
for(int j=2;j<=N;j++)
{
Node *s = (Node *)malloc(sizeof(Node));
s->num = j;
p->next = s;
p = s;
}
p->next = q;
int flag = N;//delete一个,flag就减1,直到减到0表示全部删除了,就退出循环
p = q;
while(flag!=0)
{
//for(int k =0;k<2;k++)//p向后走两次就到了要删除的位置
//{
// p = p->next;
//}
p = p->next;//现在只让他走一步,那么p的下一个就是要删除的
cout << p->next->num << " ";
deleteNode(p);//传给的是p,要删除的是p的下一个节点
flag--;
p = p->next;
}
cout << endl;
}
return 0;
}
void deleteNode(Node *p)
{
Node *s = p->next;
p->next = s->next;
free(s);
}
网友评论