LatinSquare的链表实现
1、拉丁方阵是n*n的方阵,在方阵里有n个元素,每个元素的个数是n,在方阵的每行每列每个元素只出现一次。
1 2 3
2 3 1
3 1 2
2、在第一排相当于元素按顺序排列,第二排以第二个元素开始当元素大于方阵的最大值使就从1开始,第三排就从第三个元素开始,以此类推。
3、下面是代码演示
#include <iostream>
using namespace std;
#define Latin struct LationSquare
Latin
{
int Num;
Latin* Next;
};
Latin* Creat(int number)
{
int j = 1;
while (j<=number)
{
int i = 1;
int k = j;
Latin* point1 = NULL;
Latin* point2 = NULL;
Latin* head;
head = new Latin;
point1 = head;
while (i<=number)
{
point2 = new Latin;
if (point2->Num = (k++) % number==0)
{
point2->Num = number;
}
else
{
k--;
point2->Num = (k++) % number;
}
point1->Next = point2;
point1 = point2;
cout << point2->Num << "\t";
i++;
}
cout << endl;
point2->Next = head->Next;
delete(head);
j++;
}
return 0;
}
int main()
{
int Number;
cout << "Please input LatinSaquare is length of size:" << endl;
cin >> Number;
Latin* list = Creat(Number);
}