在C语言中编程实现建立无向图的邻接表,输出某个点的邻接点~!
发布网友
发布时间:2022-03-27 09:48
我来回答
共3个回答
懂视网
时间:2022-03-27 14:09
画无向图的邻接表的方法是:
1、首先画出一个无向图(注意:无向图是没有箭头的)。
2、然后根据图中点的范围,画出一个长条矩形框。
3、接着分析该顶点与哪几个顶点相连,比如0与1、2、3、4相连。
4、其次把相连的几个顶点依次首尾连接起来,和存储结构中的链表的形式类似。
5、最后根据上述的方式,画出1、2、3、4的链表即可。
热心网友
时间:2022-03-27 11:17
用矩阵表示无向图的,设有M个节点,则建立一个MXM矩阵,对每个顶点添加它的邻接点,即每行中对于有标记的列为该行顶点的邻接点。
热心网友
时间:2022-03-27 12:35
#include "iostream.h"
const int Max_vertex=5;
const int Max_Edge=8;
int visited[Max_vertex+1]; //访问标志数组
struct ArcNode
{
int adjvex;
ArcNode *nextarc; //指向下一条弧
};
struct Vnode
{
int v; //顶点信息
ArcNode *next;
}a[Max_vertex+1];
/* 无向图的建立 */
void creategraph()
{
int i,j,k;
ArcNode *s;
//初始化
for(i=1;i<=Max_vertex;i++)
{
a[i].v=i;
a[i].next=NULL;
}
/*以头插法建立 */
for(k=1;k<=Max_Edge;k++)
{
cout<<"请输入第"<<k<<"条边:";
cin>>i>>j;
if(i>9||i<0||j<0||j>9)
{
cout<<"输入错误!!\n"<<endl;
break;
}
else{
cout<<endl;
s=new ArcNode;
s->adjvex=j;
s->nextarc=a[i].next;
a[i].next=s;
s=new ArcNode;
s->adjvex=i;
s->nextarc=a[j].next;
a[j].next=s;
}
}
}
void display()
{
ArcNode *p;
cout<<"你建立的图为:"<<endl;
for(int i=1;i<=Max_vertex;i++)
{
p=a[i].next;
cout<<a[i].v<<"->";
while(p->nextarc!=NULL)
{
cout<<p->adjvex<<"->";
p=p->nextarc;
}
cout<<p->adjvex<<endl;
}
}
void main()
{
cout<<"/******\t本算法以关插法建立无向图的邻接表为例!\t******/"<<endl;
char yn='y';int k;
creategraph();
display();
}