#include<stdio.h>
#include<stdlib.h>
#include<time.h>
#include<math.h>
//定义结构体
struct node{
int d_num;//跳数
int d_next;//下一跳节点
};
//定义链路状态算法的结构体
struct lsnode{
int visited;//1代表已访问
char path[40];//路径
int index;//路径字符数量
}lsn[40];
int main(){
struct node no_1[40][40], no_2[40][40];
int N=0,num=0;
int flag=0;//是否有节点出现,链路状态路由算法在所有节点都已经访问完成or找到目标节点的最短路径的时候结束
int f1=0,f2=1,f3=0;//是否满足交换条件的标志
int i=0,j=0,k=0,r=0,rl=0,m=0,n=0;
int min=0;//寻找权值最小的节点
int temp;
int quan;
char begin,end;
int beginNode=0,endNode=0;
char map[40][40];//坐标图
int node[50][2];//节点的坐标,最多100个节点,0横坐标、1纵坐标
int nearNodes[40][2];//2个相邻节点保存在数组
int nearnum=0;//相邻节点数组的大小
int topmap[40][40];//双向图二维表
struct node *routeHeaders[40];//保存每个链表的头指针
struct node *copyHeaders[40];//复制每个链表的头指针
typedef struct node* np;//开辟节点内存用到
struct node *p, *p1, *p2, *p3, *p4, *p5;//添加节点用到
//初始化40*40的地图
for(i=0;i<40;i++){
for(j=0;j<40;j++){
map[i][j]='*';
//printf("* ");
if(i != j)topmap[i][j]=10000;
else topmap[i][j]=0;
}
//printf("\n");
}
printf("请输入节点数量:\n");
scanf("%d",&N);
//随机生成坐标
srand(time(NULL));
for(i=0;i<N;i++){
node[i][0]=rand(i+1)%40;
node[i][1]=rand(i+10)%40;
//printf("%c ",i+1);
}
//printf("%d %d",node[0][0],node[0][1]);
//printf("%d %d",node[6][0],node[6][1]);
//printf("%d %d",node[6][0],node[6][1]);
//打印有节点的坐标图,
for(i=0;i<40;i++){
for(j=0;j<40;j++){
for(k=0;k<N;k++){
if(i==node[k][0] && j==node[k][1]){
flag=1;//有节点出现在这个坐标
printf("%c ",(char)(k+65));
break;
}
}
if(flag==1){
flag=0;
}else{
printf("* ");
}
}
pr