데이터 구조의 마술사 의 패
1268 단어 데이터 구조
# include
# include
typedef struct Node
{
struct Node * pNext;
int val;
bool empty; // , false, true
}NODE,* PNODE;
PNODE init();
void magic(PNODE);
void traverse(PNODE);
int main()
{
PNODE pHead=init();
//traverse(pHead);
magic(pHead);
traverse(pHead);
return 0;
}
PNODE init()
{
PNODE pHead=(PNODE)malloc(sizeof(NODE));
pHead->empty=true;
pHead->pNext=NULL;
//pHead->val=1;
PNODE p=pHead;
for (int i=2;i<=13;++i)
{
PNODE pNew=(PNODE)malloc(sizeof(NODE));
pNew->empty=true;
pNew->pNext=pHead;
//pNew->val=i;
p->pNext=pNew;
p=pNew;
}
return pHead;
}
void traverse(PNODE pHead)
{
PNODE p=pHead;
do
{
printf("%d ",p->val);
p=p->pNext;
} while (p!=pHead);
printf("
");
}
void magic(PNODE pHead)
{
PNODE p=pHead;
while(pHead!=p->pNext)
p=p->pNext; // ,
for (int i=1;i<=13;++i) //
{
for (int j=1;j<=i;++j) //
{
p=p->pNext; //
while(!p->empty) // ,
p=p->pNext;
}
p->empty=false; // ,
p->val=i;
}
}