算法导论-第22章-基本的图算法:强连通分量(深度优先遍历基础上)C++实现

#include <iostream>
using namespace std;

struct Vertex {
	int index{ -1 };
	Vertex* next{ nullptr };
};

enum class COLOR {
	WHITE, GRAY, BLACK
};

struct Node {
	int d{};
	int f{};
	COLOR color{ COLOR::WHITE };
};

void recurse_delete(Vertex* v) {
	if (v->next) {
		recurse_delete(v->next);
	}
	else {
		delete v;
	}
}

void delete_list(Vertex* V, size_t n) {
	Vertex* head{};
	Vertex* p{};
	for (int i = 0; i < n; ++i) {
		head = &V[i];
		if ((p = head->next)) {
			recurse_delete(p);
		}
	}
	delete[]V;
}

void insert(Vertex* V, int from, int to) {
	Vertex* head = &V[from];
	Vertex* p = head->next;
	head->next = new Vertex{};
	head->next->index = to;
	head->next->next = p;
}

void DFS_VISIT(Vertex* V, Node* N, int u, int& time) {
	time++;
	N[u].color = COLOR::GRAY;
	N[u].d = time;
	Vertex* head = &V[u];
	Vertex* p = head->next;
	while (p) 
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值