小白学c语言,无向图邻接链表,求大佬帮忙改改

qq_40478118 2018-06-13 10:08:56
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
#include <malloc.h>

int edge[1000][2]={0};

typedef struct anode
{
int adjvex;
struct anode *next;
}Anode;

typedef struct vnode
{
int vertex;
Anode *first;
}Vnode;

typedef struct
{
int vnum;
int ednum;
Vnode vex[100];
}Lgraph;

Lgraph * createGraph()
{
int i=0,c1,c2;
Anode *bian;
Anode *p;
Lgraph *mG;
mG=(Lgraph *)malloc(sizeof(Lgraph));
mG->ednum=12;
mG->vnum=10;
printf("vnum:");
for(i=0;i<mG->vnum;i++)
{
scanf("%d",&mG->vex[i]);
mG->vex[i].first=NULL;
}
printf("ednum");
for(i=0;i<12;i++)
{
scanf("%d",&edge[i][0]);
scanf("%d",&edge[i][1]);
}

for(i=0;i<mG->ednum;i++)
{
c1=edge[i][0];
c2=edge[i][1];
bian=(Anode *)malloc(sizeof(Anode));
bian->adjvex=c2;
bian->next=NULL;

if(mG->vex[c1].first==NULL)
{
mG->vex[c1].first=bian;
}
else
{
p=mG->vex[c1].first;
while(p->next!=NULL)
{
p=p->next;
p=bian;
}
}
bian->adjvex=c1;
bian->next=NULL;

if(mG->vex[c2].first==NULL)
{
mG->vex[c2].first=bian;
}
else
{
p=mG->vex[c2].first;
while(p->next!=NULL)
{
p=p->next;
p=bian;
}
}
}
return mG;
}

void dispaly(Lgraph *p)
{
Anode *q;
q=(Anode *)malloc(sizeof(Anode));
int i;
for(i=0;i<p->vnum;i++)
{
printf("%d ",p->vex[i]);
while(p->vex[i].first!=NULL)
{
q=p->vex[i].first;

while(p!=NULL)
{
printf("%d ",q->adjvex);
q=q->next;
}
}
printf("\n");
}
}

void main()
{
Lgraph *G;
G=createGraph();
dispaly(G);
}


...全文
839 2 打赏 收藏 转发到动态 举报
写回复
用AI写文章
2 条回复
切换为时间正序
请发表友善的回复…
发表回复
赵4老师 2018-06-14
  • 打赏
  • 举报
回复
百度搜相关关键字。
qq_40478118 2018-06-14
  • 打赏
  • 举报
回复
来个大佬帮帮忙啊

69,373

社区成员

发帖
与我相关
我的任务
社区描述
C语言相关问题讨论
社区管理员
  • C语言
  • 花神庙码农
  • 架构师李肯
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧