邻接矩阵转十字邻接表
#include "stdafx.h" #include <stdio.h> #include <stdlib.h> #include <string.h> typedef struct node { int headvex; int tailvex; node* headlink; node* taillink; }arcnode,*parc; typedef struct { int vertex; arcnode *firstin; arcnode *firstout; }vnode,*pvnode; int main() { int a[4][4]={{0,0,0,1},{1,0,1,0},{1,1,0,0},{0,0,0,0}}; parc p[4][4]; pvnode pv[4]; for(int i=0;i<4;i++) for(int j=0;j<4;j++) if(a[i][j]>0) { p[i][j]=(parc)malloc(sizeof(arcnode)); memset(p[i][j],0,sizeof(arcnode)); p[i][j]->headvex=j; p[i][j]->tailvex=i; } for(int i=0;i<4;i++) for(int j=0;j<4;j++) if(a[i][j]>0) { for(int k=j+1;k<4;k++) { if(a[i][k]>0)p[i][j]->taillink=p[i][k]; } for(int k=i+1;k<4;k++) { if(a[k][j]>0)p[i][j]->headlink=p[k][j]; } } for(int i=0;i<4;i++) { pv[i]=(pvnode)malloc(sizeof(vnode)); pv[i]->vertex=i; for(int j=0;j<4;j++) { if(a[j][i]>0) { pv[i]->firstin=p[j][i]; break; } } for(int j=0;j<4;j++) { if(a[i][j]>0) { pv[i]->firstin=p[i][j]; break; } } } printf("%d",pv[0]->firstin->headvex); system("pause"); return 0; }
相信世界是平的
谨记四个字“修身养性”
大江东去浪淘尽英雄,再牛B的人物最后也是一掊土
向善不是目的,而是抚慰心灵,更多的感受幸福,感谢别人给你行善的机会
相信老子的话:万物生于有,有生于无,一切的道理都源于一个无法证明的假设
我是好是坏就自然而然的摆在那里,并不会因为别人的评价而改变什么,我也不需要别人用一张纸来说明我什么,世间最难得的是自由
谨记四个字“修身养性”
大江东去浪淘尽英雄,再牛B的人物最后也是一掊土
向善不是目的,而是抚慰心灵,更多的感受幸福,感谢别人给你行善的机会
相信老子的话:万物生于有,有生于无,一切的道理都源于一个无法证明的假设
我是好是坏就自然而然的摆在那里,并不会因为别人的评价而改变什么,我也不需要别人用一张纸来说明我什么,世间最难得的是自由
支持大额赞助:
![](https://images.cnblogs.com/cnblogs_com/sky-view/883309/o_%E6%97%A0%E6%A0%87%E9%A2%98.png)