问题描述:
n × n 的方阵,在这种 n × n 的方阵里,恰有 n 种不同的元素,每一种不同的元素在同一行或同一列里只出现一次。
循环链表,第一次遍历从头节点开始,打印第一行,以后每行都从下一个节点开始遍历。
#include<iostream>
#include<stdlib.h>
using namespace std;
typedef int ElemType;
struct Node
{
Node* next;
ElemType data;
};
typedef Node LinkList;
Node* Create(int n)//尾插法创建循环链表
{
Node *head,*p,*q;
head=new Node;
head->next=NULL;
q=head;
for(int i=0;i<n;i++)
{
p=new Node;
p->data=i+1;
q->next=p;
q=p;
}
p->next=head->next;
free(head);
return p->next;
}
void main()
{
int n=5;
Node *head=Create(n);
Node *p=head;
for(int i=0;i<n;i++)
{
p=head;
for(int j=0;j<i;j++)
p=p->next;
for(int k=0;k<n;k++)
{
cout<<p->data<<" ";
p=p->next;
}
cout<<endl;
}
}