现在的位置: 首页 > 综合 > 正文

生成拉丁方阵的完整C代码

2019年04月25日 ⁄ 综合 ⁄ 共 697字 ⁄ 字号 评论关闭
/* 拉丁方阵的生成程序 */

#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 );
}

抱歉!评论已关闭.