C 언어 데이터 구조 인접 표 만 들 기

/ * 인접 표 만 들 기 (체인 저장) * 정점 정보 입력 * 각 변 의 아래 표 시 를 입력 * 각 정점 을 기점 으로 하 는 단 방향 링크 만 들 기 * 정점 으로 링크 의 데 이 터 를 출력 합 니 다 * /
#include
#include
#include
#define VERTEXNUM 100
#define ERROR 0
#define OK  1
typedef char * VertexType;//         
typedef struct edgenode
{
    int adjvex;//      
     struct edgenode*next;//            
}EdgeNode;//     
typedef struct vnode
{
    EdgeNode*firstedge;
    //                          
    VertexType *vertex;
    //     

}Vnode;//     
typedef struct algraph
{
    Vnode adjlist[VERTEXNUM];//    
    int n,e;//       
}ALGraph;//         
int create_algraph(ALGraph *G);//      
void test_algraph();//    
int locate(ALGraph*G,VertexType *vex);//          
void main()
{
   test();//    

}
int create_algraph(ALGraph *G)//      
{
    int i,j;
    int x1,x2;//      
    EdgeNode*enode;//         

    VertexType vex1,vex2;
    printf("       :
"); scanf("%d",&G->e); printf(" :
"); scanf("%d",&G->n); // for(i=0;in;i++) { G->adjlist[i].vertex=(VertexType)malloc(sizeof(char)*10); printf(" %d:",i+1); scanf("%s",G->adjlist[i].vertex); G->adjlist[i].firstedge=NULL; } // for(i=0;ie;i++) { vex1=(VertexType)malloc(sizeof(char)*10); vex2=(VertexType)malloc(sizeof(char)*10); printf(" :"); scanf("%s",vex1); printf(" :"); scanf("%s",vex2); x1= locate(G,vex1); x2= locate(G,vex2); if(x1==-1||x2==-1) return ERROR; else { enode=(EdgeNode*)malloc(sizeof(EdgeNode)); enode->adjvex=x2; enode->next=G->adjlist[x1].firstedge; G->adjlist[x1].firstedge=enode; } } return OK; } int locate(ALGraph*G,VertexType *vex)// { int index=0; while(indexn) { if(strcmp(vex,G->adjlist[index].vertex)==0) break; else index++; } return (index==G->n ? -1 : index); } void test()// { ALGraph*G; int i; int result; Vnode vnode; EdgeNode* enode; G=(ALGraph*)malloc(sizeof(ALGraph)); result=create_algraph(G); if(result!=0) { for(i=0;in;i++) { vnode=G->adjlist[i]; printf(" :"); printf("%s",vnode.vertex); enode=vnode.firstedge; while(enode) { printf("->%d",enode->adjvex); enode=enode->next; } printf("
"); } } }

좋은 웹페이지 즐겨찾기