邻接表存储无向图

问题:还是把邻接表的结构体定义搞明白,就没那么难了^^

 

代码:

#include <iostream>
#include <cstdlib>
using namespace std;

#define MAXV 20
typedef struct edgeNode       //边表节点
{
	int data;
	struct edgeNode *next;
}edgeList;

typedef struct headNode      //头节点
{
	char vex;
	edgeList *firstedge;
}headList;

typedef struct adjNode       //邻接表
{
	headList adjArr[MAXV];
	int n,e;                //图顶点数和边数
}*adjGraph;

void createAdjGraph(adjGraph &ag)
{
	char c;
	int p,q;
	edgeList *s;
	edgeList *m;
	cout<<"please input the the num of n and e:";
	cin>>ag->n>>ag->e;
	for(int i=0;i<ag->n;i++)
	{
		cin>>c;
		ag->adjArr[i].vex=c;
		ag->adjArr[i].firstedge=NULL;
		getchar();
	}

	for(int j=0;j<ag->e;j++)
	{
		cout<<"please input adj vexs:";
		cin>>p>>q;
		s=(edgeList*)malloc(sizeof(struct edgeNode));
		if(!s)
			return;
		s->data=p;
		s->next=ag->adjArr[q].firstedge;
		ag->adjArr[q].firstedge=s;

		m=(edgeList*)malloc(sizeof(struct edgeNode));
		if(!m)
			return;
		m->data=q;
		m->next=ag->adjArr[p].firstedge;
		ag->adjArr[p].firstedge=m;
	}


}

void showAdjGraph(adjGraph ag)
{
	for(int i=0;i<ag->n;i++)
	{
		cout<<ag->adjArr[i].vex<<":";
		while(ag->adjArr[i].firstedge!=NULL)
		{
			cout<<ag->adjArr[i].firstedge->data<<" ";
			ag->adjArr[i].firstedge=ag->adjArr[i].firstedge->next;
		}
		cout<<endl;
	}
}
int main()
{
	adjGraph ag;
	ag=(adjGraph)malloc(sizeof(struct adjNode));
	if(!ag)
		return -1;
	cout<<"创建邻接表:"<<endl;
	createAdjGraph(ag);
	cout<<"输出邻接表:"<<endl;
	showAdjGraph(ag);
	return 0;
}

 运行截图:

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值