-
Notifications
You must be signed in to change notification settings - Fork 0
Expand file tree
/
Copy pathGraph.c
More file actions
124 lines (111 loc) · 2.7 KB
/
Graph.c
File metadata and controls
124 lines (111 loc) · 2.7 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
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
#include "Graph.h"
#include <stdio.h>
#include <stdlib.h>
#include <stdbool.h>
#include "../../List/List/List.h"
typedef struct Node
{
int index;
int lenght;
} Node;
typedef struct Graph
{
Node** nodes;
int nodesCount;
int** matrix;
} Graph;
Graph* createGraph(int numberOfNode)
{
Graph* newGraph = calloc(1, sizeof(Graph));
newGraph->nodes = calloc(numberOfNode, sizeof(Node*));
for (int i = 0; i < numberOfNode; i++)
{
newGraph->nodes[i] = calloc(1, sizeof(int*));
newGraph->nodes[i]->index = i;
newGraph->nodes[i]->lenght = 0;
}
newGraph->matrix = calloc(numberOfNode, sizeof(int*));
for (int i = 0; i < numberOfNode; i++)
{
newGraph->matrix[i] = calloc(numberOfNode, sizeof(int));
}
return newGraph;
}
void edgeLength(Graph* graph, int firstVertex, int secondVertex, int lenght)
{
graph->matrix[firstVertex][secondVertex] = lenght;
graph->matrix[secondVertex][firstVertex] = lenght;
}
void printMatrix(Graph* graph)
{
for (int i = 0; i < 6; i++)
{
printf("\n ");
for (int j = 0; j < 6; j++)
{
printf("%d ", graph->matrix[i][j]);
}
}
}
int getLength(Graph* graph, int firstVertex, int secondVertex)
{
return graph->matrix[firstVertex][secondVertex];
}
typedef struct Table
{
int numberOfSegments;
struct List** array;
} Table;
Table* lenght(List* list, Error* error, Graph* graph)
{
while (!isEmpty(list))
{
Position* position = first(list, error);
while (position != NULL)
{
for (int i = 0; i < returnSize(list); i++)
{
int l = get(list, position, error);
int a = getLength(graph, i, l);
add(list, value, error);
if (a != 0)
{
add(newList, i ,error);
removeElement(list);
}
if (a == 0)
{
return;
}
lenght(list, error, graph);
next(position);
}
}
}
}
void printTable(Table* table)
{
for (int i = 0; i < table->numberOfSegments; i++)
{
printf("\n");
print(table->array[i]);
}
}
int main(void)
{
Graph* graph = NULL;
Error error = NOT_ERROR;
edgeLength(graph, 0, 1, 2);
edgeLength(graph, 0, 1, 2);
edgeLength(graph, 0, 1, 2);
edgeLength(graph, 0, 1, 2);
edgeLength(graph, 0, 1, 2);
edgeLength(graph, 0, 1, 2);
edgeLength(graph, 0, 1, 2);
edgeLength(graph, 0, 1, 2);
List* list = createList();
for (int i = 0; i < 6; i++)
{
add(list, i , &error);
}
}