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

合集下载
相关主题
  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。

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

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

}

}

相关文档
最新文档