|
马上注册,结交更多好友,享用更多功能^_^
您需要 登录 才可以下载或查看,没有账号?立即注册
x
本帖最后由 焦糖橙子 于 2021-8-13 18:09 编辑
目标:输出一个n*n的方阵,每一行,每一列的元素都不重复
例如3*3的方阵
1 2 3
2 3 1
3 1 2
输出的结果错了
想问一下45行的代码不能实现下次循环从链表的第二个数开始输出吗?
- #include<stdio.h>
- #include<stdlib.h>
- typedef struct Node
- {
- int data;
- struct Node*next;
- }node,*pnode;
- pnode Create(int n);
- pnode Create(int n)//创建一个1~n的循环链表,存储1~n的数据
- {
- pnode head=(pnode)malloc(sizeof(node));
- pnode link=head;
- head->next=link;
- for(int i=0;i<n;i++)
- {
- link->next=(pnode)malloc(sizeof(node));
- link->data=i+1;
- link=link->next;
- }
- link->next=head;//尾巴的next指向头结点位置
- return head;
- }
- int main(void)
- {
- int n;
- pnode list;
- printf("请输入一个n*n方阵:");
- scanf("%d",&n);
- list=Create(n);
- for(int i=0;i<n;i++)
- {
- for(int j=0;j<n;j++)
- {
- printf("%4d",list->data);
- list=list->next;
- }
- list=list->next;//第二次从2开始输出,第三次从3输出,以此类推
- putchar('\n');
- }
- return 0;
- }
复制代码
for(int i=0;i<n;i++)
{
link->next=(pnode)malloc(sizeof(node));
link->data=i+1;
link=link->next;
}
link->next=head;//尾巴的next指向头结点位置
这段代码 构成的循环链表 有一个没有初始值的节点 如果输入n为4 你构成的循环列表是 1->2->3->4->未初始节点->头部1 本来四个节点的循环链表你里面有了五个节点
这是我改的一种 可以参考
for (int i = 0; i<n; i++)
{
link->next = (pnode)malloc(sizeof(node));
link->next->data = i + 1;
link = link->next;
}
link->next = head->next;//尾巴的next指向头结点位置
|
|