-
Notifications
You must be signed in to change notification settings - Fork 0
Expand file tree
/
Copy pathadjlist.h
More file actions
87 lines (66 loc) · 1.44 KB
/
adjlist.h
File metadata and controls
87 lines (66 loc) · 1.44 KB
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
#ifndef ADJLIST_H
#define ADJLIST_H
#include <string>
#include <fstream>
#include <iostream>
#include <cstdlib>
#include <utility>
#include <forward_list>
/**
* \class List
*
* @brief The Graph class
*/
class adjList
{
private:
std::forward_list< std::pair<int, double> >* data;
int** vArray;
double** wArray;
int nVertices;
int* degrees;
public:
/**
* @brief Graph Default constructor
*/
adjList(){
data = NULL;
vArray = NULL;
degrees = NULL;
nVertices = 0;
}
void generate(int numVertices);
void postProcess();
void push(int x, int y, double w);
int degree(int v) const {return degrees[v];}
bool getNeighbours(int vertex, int** array) const {
*array = vArray[vertex];
return false;
}
bool getWeights(int vertex, double** array) const {
//std::cout<<"In list: getWeights:: ";
//for (int i = 0; i<degrees[vertex]; i++) std::cout<<"w "<<wArray[vertex][i]<<" ";
//std::cout<<std::endl;
*array = wArray[vertex];
return false;
}
~adjList(){
if (vArray){
for(int i=0; i<nVertices; i++){
delete [] vArray[i];
}
delete [] vArray;
}
if (wArray){
for(int i=0; i<nVertices; i++){
delete [] wArray[i];
}
delete [] wArray;
}
if (degrees){
delete [] degrees;
}
}
protected:
};
#endif // ADJLIST_H