文档库 最新最全的文档下载
当前位置:文档库 › 无向图的连接链表并求每个顶点的度

无向图的连接链表并求每个顶点的度

无向图的连接链表并求每个顶点的度
无向图的连接链表并求每个顶点的度

无向图的连接链表并求每个顶点的度

#include

#include

#define MAX 7

typedef struct Node

{

int abj;

struct Node *next;

}Edgenode;

typedef struct

{

int data;

Edgenode *first;

}Vexnode;

typedef struct

{

int vexnum,arcnum;

Vexnode abj[MAX];

}Graph;

int Locate(Graph G,int v)

{

int i,h;

for(i=0;i

{

if(v==G.abj[i].data)

{

h=i;

}

}

return h;

}

void main()

{

Graph G;

int i,j,k,v1,v2,n=0;

Edgenode *s;

printf("请输入顶点个数及边的个数(用,号隔开):\n");

scanf("%d,%d",&G.vexnum,&G.arcnum);

printf("请输入所有顶点的信息(用空格隔开):\n");

for(i=0;i

{

scanf("%d",&G.abj[i].data);

G.abj[i].first=NULL;

}

printf("请输入每一条边依附的两个顶点(两个顶点用‘,’隔开):\n");

for(k=0;k

{

scanf("%d,%d",&v1,&v2);

i=Locate(G,v1);

j=Locate(G,v2);

s=(Edgenode*)malloc(sizeof(Edgenode));

s->abj=j;

s->next=G.abj[i].first;

G.abj[i].first =s;

s=(Edgenode*)malloc(sizeof(Edgenode));

s->abj=i;

s->next=G.abj[j].first;

G.abj[j].first=s;

}

printf("输出单链表里的内容:\n");

for(i=0;i

{

printf("%d",G.abj[i].data);

}

printf("各顶点的度为:");

for(i=0;i

{

n=0;

s=G.abj[i].first;

while(s!=NULL)

{

n++;

s=s->next;

}

printf("顶点%d的度为%d\n",G.abj[i].data,n);

}

}

相关文档