无向图的连接链表并求每个顶点的度
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 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); } }