用C++实现图论中的邻接表,用的STL中vector和list实现
这是AdjList.h文件
#pragma once
#include <iostream>
#include <list>
#include <vector>
#include <fstream>
#include <cassert>
using namespace std;
class AdjList
{
private:
int V;//顶点数
int E;//边数
vector<list<int>> adjlist;//用于存储每个顶点的相邻顶点
//vector中有V个list,每个list里面是各个顶点的相邻顶点
void validateVertex(int v) {//用于验证输入顶点的有效性
if (v < 0 || v >= V)
{
cout << "vertex " << v << " is invalid" << endl;
}
}
public:
AdjList(){
V = 0;
E = 0;
}
AdjList(string filename) {//读取顶点与边的关系文件
ifstream file;
file.open(filename.data());
assert(file.is_open());
//读取 V 和 E 的值
//前两个值是顶点个数和边数
char c;
file >> c;
V = c - '0';
file >> c;
E = c - '0';
//初始化vector list列表
for (int i = 0; i < V; i++)
{
list<int> ve_list;