貌似创建了邻接表....

形式上确实能输出一个图的邻接表,但实际上好像不大好......

但还是记录一下( 

#include <iostream>
using namespace std;
const int N = 50;   //图顶点数最大值

//定义顶点结点
struct VertexNode
{
	int number;   //顶点编号
	VertexNode *nextvertex;
};

int main()
{
	//创建邻接表
	int i = 0,n,j;
	VertexNode v[N],*p,*newv,*q;
	cout<<"输入顶点个数";
	cin>>n;
	while (i<n)
	{
		cout<<"输入顶点编号";
		cin>>v[i].number;

		//建立每个顶点的单链表
		cout<<"输入与该点相邻的点,输入-1时输入结束";
		cin>>j;
		if (j != -1)
		{
			newv = new VertexNode;
			newv->number = j;
			v[i].nextvertex = newv;
			p = newv;
			cin>>j;
		    while(j>-1)
			{
				newv = new VertexNode;
			    newv->number = j;
			    p->nextvertex = newv;
				p = p->nextvertex;
		        cin>>j;
		    }
		    p->nextvertex = NULL;
		}
		else
			v[i].nextvertex = NULL;
		i++;
	}
	
	//打印邻接表
	cout<<"邻接表为:"<<"\n";
	for (i=0;i<n;i++)
	{
		cout<<v[i].number;
		q = v[i].nextvertex;
		while(q!=NULL)
		{
			cout<<"->"<<q->number;
			q = q->nextvertex;
		}
		cout<<"\n";
	}
	system("pause");
	return (0);
}
	
		   

例如p25图2.5的输出结果:

 

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值