数据结构课程设计——图结构

目录

存储结构

图的遍历

相关算法及其应用


存储结构

邻接矩阵

邻接表

图的遍历

深度优先遍历

bool edg[100][100];
bool visited[100];
memset(edg, 0, sizeof(edg));
memset(visited, 0, sizeof(visited));
vector<int> result;
int num;//节点个数
 
void DFS(int u)//u为节点下标
{
	visited[u] = true;
	result.push_back(u);
	for (int i = 0;i < num;i++)
	{
		if (visited[i] == false&&edg[i][u]==true)
        //当i节点未被访问且i节点与该节点u存在边时
			DFS(i);
	}
}
//得到的result序列即为按DFS遍历的顺序结果

广度优先遍历

bool edg[100][100];
bool visited[100];
memset(edg, 0, sizeof(edg));
memset(visited, 0, sizeof(visited));
vector<int> result;
int num, E;

void BFS(int p)
{
	queue<int> q;
	int i;
	q.push(p);
	visited[p] = true;
	while (!q.empty())
    //按照队列中的顺序,访问完一个节点其所有相连的节点后
    //再按顺序访问与其子节点相连的节点...直到访问完所有节点,队列为空
	{
		int s = q.front();
		q.pop();
		result.push_back(s);
		for (i = 0;i < num;i++)
		{
			if (visited[i] == false && edg[i][s] == true)
            //在所有节点中找到未被访问过的且与当前result中最后一个节点s有边相连的节点
			{
				q.push(i);
				visited[i] = true;
                //放入队列中,标记为已访问
			}
		}
	}
}

 

相关算法及其应用

最短路径——Dijkstra算法、Floyd算法

​最小生成树——Prime算法、Kruscal算法

  • 3
    点赞
  • 5
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值