日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

循环链表:拉丁方阵问题

發布時間:2025/3/15 编程问答 28 豆豆
生活随笔 收集整理的這篇文章主要介紹了 循环链表:拉丁方阵问题 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

拉丁方陣問題介紹


拉丁方陣是一種n×n的方陣,方陣中恰有n種不同的元素,每種元素恰有n個,并且每種元素在一行和一列中 恰好出現一次。著名數學家和物理學家歐拉使用拉丁字母來作為拉丁方陣里元素的符號,拉丁方陣因此而得名。例如下面是一個3×3的拉丁方陣:

1 2 3

2 3 1

3 1 2


拉丁方陣問題分析


矩陣的第一行是 1 2 3 從第一個元素開始到最后一個元素。

矩陣的第二行是 2 3 1 從第二個元素開始到 循環1圈的最后一個元素。

矩陣的第三行是 1 2 3 從第三個元素開始到 循環1圈的最后一個元素。

不難找出規律:矩陣的第n行,元素是從第n個元素 循環遍歷完一圈的數據

那我們自己推導2 ?5 ?8 ?10的拉丁方陣是

2?5?8?10

5?8?10?2

8?10?2?5

10?2?5?8

符合拉丁方陣的要求吧。

從代碼角度來實現,主要思路如下

1、用循環鏈表來接受n個不同的數據。

2、矩陣第i行數據,是從循環鏈表的第i個位置的數據遍歷完整個循環鏈表 將其數據取出。


拉丁方陣代碼展示


#define _CRT_SECURE_NO_WARNINGS #include <stdio.h> #define OK 1 #define ERROR 0typedef struct Node {int data;struct Node* next; } Node, *LinkList; /* 創建循環鏈表 */ int CreatCircleList(Node** circle_list,int n) {printf("請輸入%d個不同的數字:",n);int i = 0;//創建頭結點Node* head = (Node*)malloc(sizeof(Node));Node* temp = head;//temp 移動指針,剛開始指向頭結點while (i < n){int data=0;scanf("%d",&data);//創建結點并初始化數據Node* node = (Node*)malloc(sizeof(Node));node->data = data;node->next = NULL;//將結點添加到循環鏈表中temp->next = node;temp = node;i++;}//循環結束 temp指向最后一個結點,讓其指向第一個結點,形參循環列表temp->next = head->next;//循環鏈表指向第一個結點*circle_list = head->next;//釋放頭結點free(head);return OK;} //獲取循環鏈表長度 int LengthCircleList(Node* circle_list) {if (circle_list == NULL){return 0;}int i = 1;Node* node = circle_list;//node為移動指針,node 開始指向循環鏈表第一個結點//循環鏈表遍歷完判斷,尾結點的指針域指向第一個結點while (node->next != circle_list){node = node->next;i++;}return i; } /* 顯示拉丁方陣 */ int ShowLatin(Node* latin_list) {int len = LengthCircleList(latin_list);Node* first = latin_list;for (size_t i = 0; i < len; i++){Node* node = first;int j = 0;/*找到開始結點第一行 開始結點為 循環鏈表第1個位置結點第二行 開始結點為 循環鏈表第2個位置結點第N 行 開始結點為 循環鏈表第n個位置結點*/while(j < i){node = node->next;j++;}Node * begin = node;int k = 0;//遍歷完這個循環列表while(k<len){printf("%d\t",begin->data); begin = begin->next;k++;}printf("\n");}return OK; } //銷毀鏈表釋放內存 int DestroyCricleList(Node* circle_list) {if (circle_list == NULL){return ERROR;}Node* node = circle_list;//node為移動指針,node 開始指向循環鏈表第一個結點//循環鏈表遍歷完判斷,尾結點的指針域指向第一個結點while (node->next!= circle_list){Node* temp = node;node = node->next;free(temp);}//釋放最后一個結點free(node);return OK; }int main(int argc, char *argv[]) {Node* circle_list = NULL;while (1){printf("請輸入拉丁方陣的階數(0退出):");int n = 0;scanf("%d", &n);if (n == 0){break;}CreatCircleList(&circle_list,n);ShowLatin(circle_list);DestroyCricleList(circle_list);}circle_list = NULL;return 0; }


拉丁方陣結果展示






總結

以上是生活随笔為你收集整理的循环链表:拉丁方阵问题的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。

主站蜘蛛池模板: 人妻少妇精品一区二区 | 国产99久久久久 | 日本三级网站在线观看 | 国产精品高潮呻吟久久aⅴ码 | 国产xxxxx在线观看 | a毛片基地 | 久久久免费高清视频 | 成人免费久久 | 欧美福利一区二区三区 | 日韩成人av在线播放 | 先锋资源av网 | 美女国产一区 | 日本www免费 | 99热麻豆 | av无限看 | 亚洲最大的黄色网 | 天天综合网在线观看 | 91精品在线免费观看 | 日韩熟女精品一区二区三区 | 激情拍拍拍 | 欧美 日韩 国产在线 | 五月99久久婷婷国产综合亚洲 | 真人抽搐一进一出视频 | 亚洲va久久久噜噜噜久久天堂 | 成人免费播放 | 福利一区三区 | 97超碰资源总站 | 日本高清黄色 | 国产日产精品一区二区三区 | 亚洲激情五月 | 中文字幕欧美视频 | 天天操女人 | 性做久久久久久久 | 日韩国产欧美在线视频 | 日本妈妈3 | 少妇激情偷人爽爽91嫩草 | 日韩精品视频播放 | 91在线精品入口 | 国产又大又粗又长 | 东方成人av在线 | 大陆一级黄色片 | 欧美二区在线观看 | 欧美午夜精品一区二区三区电影 | 色小姐av | 伊人五月婷婷 | 99热免费精品 | 欧洲午夜视频 | 熟睡侵犯の奶水授乳在线 | 爆操欧美美女 | 亚洲视频不卡 | 一本一道波多野结衣一区二区 | 91精品国产一区二区三区蜜臀 | 中文字幕在线观看一区二区三区 | 台湾佬在线 | 亚洲精品中文无码AV在线播放 | 韩国特级毛片 | 毛片免费在线观看视频 | 国产视频在 | 国产99re | 午夜剧场福利 | 国内自拍真实伦在线观看 | 伊人国产女 | 五月丁香综合激情六月久久 | 日本少妇电影 | 天天射美女 | 国产剧情精品 | 青青草精品在线视频 | 欧美丝袜视频 | 精品一区二区久久 | 四虎永久免费观看 | 欧美在线91 | 亚洲成人影音 | 99综合色 | 四川丰满妇女毛片四川话 | 亚洲国产精一区二区三区性色 | 精品久久免费观看 | 涩涩视频在线免费看 | 日韩v| 日韩精品中文字幕一区二区 | 日韩天天干 | 日本中文字幕免费 | 免费在线激情视频 | 好吊一区二区三区视频 | 亚州色图欧美色图| 午夜精品久久久久久久无码 | 国产三级av片| 国产嫩草在线观看 | 色a在线 | 日本爱爱免费视频 | 艳母在线视频 | 99综合| 欧美日韩人妻精品一区二区三区 | 久久精品免费播放 | 天天做日日做 | 2019天天干天天操 | 影音先锋中文字幕一区二区 | 污视频网站免费观看 | 欧美日韩人妻精品一区二区 | 欧美国产精品一区二区三区 |