千家信息网

数据库怎么实现邻接多重表

发表于:2025-01-23 作者:千家信息网编辑
千家信息网最后更新 2025年01月23日,这篇文章主要介绍"数据库怎么实现邻接多重表",在日常操作中,相信很多人在数据库怎么实现邻接多重表问题上存在疑惑,小编查阅了各式资料,整理出简单好用的操作方法,希望对大家解答"数据库怎么实现邻接多重表"
千家信息网最后更新 2025年01月23日数据库怎么实现邻接多重表

这篇文章主要介绍"数据库怎么实现邻接多重表",在日常操作中,相信很多人在数据库怎么实现邻接多重表问题上存在疑惑,小编查阅了各式资料,整理出简单好用的操作方法,希望对大家解答"数据库怎么实现邻接多重表"的疑惑有所帮助!接下来,请跟着小编一起来学习吧!

1.引言:

如果我们在应用中关注的是顶点 ,那么邻接表是很好的选择 ,可是如果是重点关注边 那么 邻接表就麻烦了


若要删除左边的(V0,V2)这条边,需要对图下表的阴影两个结点进行删除操作。


2.邻接多重表的存储结构:


iVex和jVex:是与某条边依附的两个顶点在顶点表中的下标。

iLink:指向依附顶点iVex的下一条边。

jLink:指向依附顶点jVex的下一条边。


3.邻接多重表示意图绘制:

邻接多重表    typedef char Vtype //顶点类型    typedef int Etype //权值类型    #definde MAXV 100;    typedef struct edgeNode // 边  表示边的个数    {       int ivex; //一条边的一端       int jvex; //一条边的另一端       struct edgeNode *ilink; //依赖于顶点ivex的下一条边       struct edgeNode *jlink;//依赖于顶点jvex的下一条边      type weight;//边 权值  }EdgeNode;        typedef struct Vnode //顶点表 节点    {        Vtype data;        EdgeNode* firstEdge; //对应的一个边  }VNODE; //        typedef struct    {        VNODE adjlist[MAXV];        int numV;//当前顶点数        int numE;//当前边数    }GraphAdjList;          void CreateALGraph(GraphAdjList* G)    {        int i,j,k;        EdgeNode* e= NULL;        cout<<输入顶点数";        cin>>G->numV;        cout<<输入边数";        cin>>G->numE;        for(i=0;inumV;i++)//建立顶点信息        {            cin >> G->adjlist[i].data; //输入顶点信息            G->adjlist[i].firstEdge = NULL; //边表节点 为空      }      for(k=0;knumE;k++)//建立边信息        {            cout<<"输入边的开始";              cin>>i;              cout<<"输入边的结尾";              cin>>j;              //注意每次插入新节点都是在链表的表头进行   有点绕        e = new EdgeNode; //(1,3) 这个线的插入是相互的对于两个点1,3来说 分别不同的因此有两个new            e->ivex = i;            e->ilink = G->adjlist[i].firstEdge;//以前是e->next = j...的。现在是当前的        G->adjlist[i].firstEdge = e;                         e->jvex = j;        e->jlink = G->adjlist[j].firstEdge;          G->adjlist[j].firstEdge = e;      }     }

到此,关于"数据库怎么实现邻接多重表"的学习就结束了,希望能够解决大家的疑惑。理论与实践的搭配能更好的帮助大家学习,快去试试吧!若想继续学习更多相关知识,请继续关注网站,小编会继续努力为大家带来更多实用的文章!

0