• 邻接表存储无向图


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

    代码:

    #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;
    }
    

     运行截图:

  • 相关阅读:
    一个常见数据库操作错误的分析(四)
    一个常见数据库操作错误的分析(六)
    vc6 配置使用 boost 1.34.1
    string tips
    greta 编译,配置,使用
    xml学习笔记(一)
    火狐插件Firebug的使用
    浅谈编写高性能的Javascript代码 【重要】
    WebConfig加密/解密
    微软发布3款SQL Injection(SQL 注入)攻击检测工具
  • 原文地址:https://www.cnblogs.com/xshang/p/3069706.html
Copyright © 2020-2023  润新知