一、圖的讀取
在這小節中我們將會學習到啊這樣將檔案讀如圖中,前面我們學了稠密圖和稀疏圖,為了統一介面我們使用模板類,讓其同時具備讀入兩種圖的能力。
程式碼實現
#include <iostream>
#include <string>
#include <fstream>
#include <sstream>
#include <cassert>
using namespace std;
// 讀取圖演算法
//使用模板Graph,統一介面
template <typename Graph>
class ReadGraph{
public:
// 從檔案filename中讀取圖的資訊, 儲存進圖graph中
ReadGraph(Graph &graph, const string &filename){
ifstream file(filename);
string line;
int V, E;
assert( file.is_open() );
// 第一行讀取圖中的節點個數和邊的個數
//將file中的第一行讀入line中
assert( getline(file, line) );
stringstream ss(line);
ss>>V>>E;
assert( V == graph.V() );
// 讀取每一條邊的資訊
for( int i = 0 ; i < E ; i ++ ){
assert( getline(file, line) );
stringstream ss(line);
int a,b;
ss>>a>>b;
assert( a >= 0 && a < V );
assert( b >= 0 && b < V );
//呼叫圖中函式新增邊
graph.addEdge( a , b );
}
}
};
本作品採用《CC 協議》,轉載必須註明作者和本文連結