マジシャンがカードをめくる


マジシャンがトランプをひっくり返す:マジシャンはトランプの中の13枚の黒桃を事前に並べてから、トランプを下に向けて手に置いた.1回目は1枚のカードで、ひっくり返すとちょうどAで、デスクトップの上に置いて、2回目は2枚のカードで、1を数えるのは手の中のカードの下に置いて、2を数えるのはちょうど2で、デスクトップの上に置いて、更に3枚のカードを数えて、ついでに1、2を数えるのは手の中のカードの下に置いて、3枚目のカードをひっくり返すのはちょうど3で、依然としてデスクトップの上に置いています.このように続けて、手の中の13枚のカードが全部ひっくり返るまで、この時デスクトップのカードの順番はちょうどA、2、3、4、5、......、J、Q、Kです.プログラミングしてマジシャンの手にある13枚のカードの元の順序を見つけてください.
#include 
using namespace std;
struct Node
{
	int value;
	Node *next;
};
int main()
{
	Node *head = NULL, *temp, *prev = NULL;
	for (int i = 0; i < 13; i++)
	{
		temp = new Node;
		temp -> value = 0;
		if (head == NULL)
			head = temp;
		if (prev != NULL)
		{
			prev -> next = temp;
		}
		prev = temp;
	}
	temp -> next = head;
	temp = head;
	temp -> value = 1;
	for (int i = 2; i <= 13; i++)
	{
		for (int j = 0; j < i; j++)
		{
			temp = temp -> next;
			if (temp -> value != 0)
				j--;
		}
		temp -> value = i;
	}
	temp = head;
	do
	{
		cout << temp -> value << " ";
		temp = temp -> next;
	} while (temp != head);
	return 0;
}