邻接表(c语言)

#include <stdio.h>
#include <malloc.h>
typedef char DataType;
#define MaxVertices 10


按个人理解:首先观察邻接表整体,里面包含一个数组,数组里面最后一个元素是一个头指针,头指针中包含得是一个单向链表,由此可以建立结构体。可以从小开始看,也可以从大开始看,这里我从大开始看,首先邻接表结构体AdjLGraph,里面元素应该有数组,现在为了方便操作,外加边数目元素和顶点数目元素,然后数组结构体AdjLHeight,里面应该有数据元素、下标元素、头指针元素,接着,同样的道理,头指针里应有一个单链表,即单链表结构体Edge。最后为了方便操作,试验数据可以用一个结构体存储,即RowCol。


typedef struct Node
{
int dest;//邻接边的弧头顶点序号
struct Node *next;//单链表的下一个结点指针
}Edge;//邻接边单链表的结点结构体


typedef struct
{
DataType data;
int source;
Edge *adj;
}AdjLHeight;//数组结构体


typedef struct
{
AdjLHeight a[MaxVertices];//数组
int numOfVertices;
int numOfEdges;
}AdjLGraph;//邻接表结构体


//边信息的结构体
typedef struct
{
int row;
int col;
}RowCol;


//邻接表初始化
void AdjInitiate(AdjLGraph *G)
{
int i;
G->numOfVertices=0;
G->numOfEdges=0;
for(i=0;i<MaxVertices;i++)
{
G->a[i].source=i;
G->a[i].adj=NULL;
}
}


//插入顶点
void InsertVertex(AdjLGraph *G,int i,DataType vertex)
{
if(i>=0 && i<MaxVertices)
{
G->a[i].data=vertex;
G->numOfVertices++;
}
else
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值