数据结构——邻接表(图)

        在讲邻接表之前,我觉得有必要介绍一下图的遍历操作:

深度优先遍历:对每一个可能的分支路径深入到不能再深入为止,而且每个节点只能访问一次

广度优先遍历:系统地展开并遍历图中的所有节点,而且每个节点只能访问一次,与队列配合进行

关于邻接表这种存储结构,在数据结构里非常特殊,因为它是由顺序+链式存储,非单一的顺序存储或链式存储,所以相对来说也比较复杂;具象化一下描述:比如食堂打饭,每个窗口就是一个顶点,每个窗口前面排着的人就是要到这个窗口打饭的人,即表示人和窗口的关系,但是各个窗口前的人互不干涉,因此彼此之间不能直接访问;又比如你去坐高铁,你必须找到对应的站台号下去,否则下去之后发现站台不对,跟你要去的站台隔着几条铁轨,还不能直接过去,必须回到上面的大走廊再继续找。废话有点多了,下面来定义结构体以及相关操作:

//边
typedef struct Edge
{
	int index;//顶点下标
	struct Edge *next;//指向下一条边的地址
}Edge;

创建到 index 顶点的边

//创建到index顶点的边
Edge *create_edge(int index)
{
	Edge *edge=malloc(sizeof(Edge));
	edge->index=index;
	edge->next=NULL;
	return edge;
}

顶点

//顶点
typedef struc
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值