/* 拉丁方阵的生成程序 */
#include<stdio.h>
#include<stdlib.h>
typedef int Elemtype;
typedef struct node {
Elemtype data;
struct node *next;
}Node, *pLink;
pLink CreatLink( int n )
{
pLink l = (pLink)malloc(sizeof(Node));
l -> data = 1;
l -> next = NULL;
pLink p, q;
p = q = l;
for( int i=0; i<n-1; i++ ) {
p = (pLink)malloc(sizeof(Node));
p -> data = i+2;
q -> next = p;
q = p;
q -> next = l;
}
return l;
}
void ShowLatin( pLink l, int n )
{
pLink p;
for( int i=0; i<n; i++ ){
p = l; //每次打印前定位到表头,便于找输出与循环变量的规律
for( int j=0; j<n+i; j++) {
if( j >= i )
printf("%d ", p->data);
p = p -> next;
}
printf("\n");
}
}
void DeleteLink( pLink l )
{
pLink p, q;
p = q = l;
while( p->next != p ) {
q = p -> next;
p -> next = q -> next;
free( q );
q = p -> next;
}
free(p);
}
void main()
{
int n;
printf("请输入要建立的拉丁方阵的维数:");
scanf("%d", &n);
pLink l = CreatLink(n);
ShowLatin( l, n);
DeleteLink( l );
}
生成拉丁方阵的完整C代码
原文作者:拉丁方阵问题
原文地址: https://blog.csdn.net/u014488381/article/details/41280219
本文转自网络文章,转载此文章仅为分享知识,如有侵权,请联系博主进行删除。
原文地址: https://blog.csdn.net/u014488381/article/details/41280219
本文转自网络文章,转载此文章仅为分享知识,如有侵权,请联系博主进行删除。