#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; }