博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
拉丁方阵问题
阅读量:6985 次
发布时间:2019-06-27

本文共 1552 字,大约阅读时间需要 5 分钟。

问题描述:

  拉丁方阵是一种n×n的方阵,方阵中恰有n中不同的元素,每种元素恰有n个,并且每种元素在一行和一列中恰好出现一次。著名数学家和物理学家欧拉使用拉丁字母来做为方阵里元素的符号,拉丁方阵因此而得名。

 

问题分析:

  用循环链表来实现

 

实现代码(c):

#include
#include
typedef struct Node{ int data; struct Node *next;}Node;typedef struct Node *LinkList;//构造一个带有N个结点的循环链表Node* CreatLists(struct Node *La,int n){ int i; struct Node *p,*s; La = (LinkList)malloc(sizeof(Node)); La->next = NULL; p = La; for(i = 1;i <= n;i++) { s = (LinkList)malloc(sizeof(Node)); s->data = i; s->next = p->next; p->next = s; p = p->next; } p->next = La->next; return p->next;} //实现拉丁方阵的输出void print(struct Node *La,int n){ int i,j; struct Node *p,*q; p = La; for(i = 1;i <= n;i++) { q = p; for(j = 1;j <= n;j++) { printf("%3d",q->data); q = q->next; } printf("\n"); p = p->next; }} int main (int argc,char* argv[]){ int m; struct Node *L,*t; while(1) { printf("****************************************************\n"); printf("***** ESC键: 退出程序 *****\n"); printf("***** *****\n"); printf("***** 其他任意键:打印拉丁方阵 *****\n"); printf("****************************************************\n"); if(getch() == 27) break; else { printf("\n请输入您要打印的拉丁方阵规模(要打印的行数):\n\n"); scanf("%d",&m); L = CreatLists(L,m); printf("\n您输入的规模为%d,打印的方阵如下:\n\n",m); print(L,m); printf("\n请输入任意键继续:\n"); getch(); system("cls"); } } return 0;}

  

posted on
2014-12-13 21:15 阅读(
...) 评论(
...)

转载于:https://www.cnblogs.com/devinblog/p/4161864.html

你可能感兴趣的文章
大道至简,职场上做人做事做管理
查看>>
《C++必知必会》读书笔记2
查看>>
web 学习资源整理
查看>>
make 参数定义
查看>>
java从字符串中提取数字
查看>>
Android深入浅出系列之服务机制—1.Android中的Service
查看>>
zz:彻底解决兼容性问题:Windows 7下载安装 Visual C++ 6.0(VC6)
查看>>
MVC、MVP以及Model2[上篇]
查看>>
面试总结,坚定自己的想法
查看>>
数据库隐式类型转换
查看>>
解决WCF调用多次之后没有响应的问题 转
查看>>
【BZOJ2318】【spoj4060】game with probability Problem 概率DP
查看>>
空格&amp;nbsp在不同浏览器中显示距离不一致问题解决方法
查看>>
Nancy 学习-身份认证(Basic Authentication) 继续跨平台
查看>>
分享5个主流的HTML5开发工具
查看>>
基于Ionic2的开源项目
查看>>
QEMU-KVM中的多线程压缩迁移技术
查看>>
Android下创建一个SQLite数据库
查看>>
软件产品与代码版本管理指南
查看>>
分析Linux内核创建一个新进程的过程【转】
查看>>