邻接表存储无向图

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

 

代码:

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

 运行截图:

posted @   xshang  阅读(685)  评论(0编辑  收藏  举报
编辑推荐:
· 如何编写易于单元测试的代码
· 10年+ .NET Coder 心语,封装的思维:从隐藏、稳定开始理解其本质意义
· .NET Core 中如何实现缓存的预热?
· 从 HTTP 原因短语缺失研究 HTTP/2 和 HTTP/3 的设计差异
· AI与.NET技术实操系列:向量存储与相似性搜索在 .NET 中的实现
阅读排行:
· 地球OL攻略 —— 某应届生求职总结
· 周边上新:园子的第一款马克杯温暖上架
· Open-Sora 2.0 重磅开源!
· .NET周刊【3月第1期 2025-03-02】
· [AI/GPT/综述] AI Agent的设计模式综述
点击右上角即可分享
微信分享提示