循环链表解决拉丁方阵问题
1.拉丁方阵
拉丁方阵(英语:Latin square)是一种 n × n 的方阵,在这种 n × n 的方阵里,恰有 n 种不同的元素,每一种不同的元素在同一行或同一列里只出现一次。
2.问题描述
输入:n个数据元素
输出:对应拉丁方阵
输入: 2 5 8 10
输出:
2 5 8 10
5 8 10 2
8 10 2 5
10 2 5 8
3.main函数
int main(){
CLinkList L; //创建循环链表头结点
printf("输入拉丁方阵的元素:");
InitList(CLinkList &L); //依次输入拉丁方阵数据 输入0结束
printf("打印拉丁方阵为:\n");
showLatinsquare(CLinkList L); //按照格式打印输出
return 0;
}
4.打印拉丁方阵代码
Status showLatinsquare(CLinkList L){
int len = L->data; //获取长度
CLinkList q = L;
for(int i = 0;i<len;i++){ //列
q = q->next; //获取每行的第一个元素
int j = 0;
CLinkList p = q;
while(j<len){ //行打印
printf("%d",p->data);
p = p->next;
}
cout<<endl<<endl;
}
return OK;
}
5.循环链表基本操作实现
——————END——————
作者注:
记录学习,分享经验。
有兴趣可以关注博主,以后还会持续更新内容哦~