aboutsummaryrefslogtreecommitdiff
path: root/CS2501/graph.c
diff options
context:
space:
mode:
authorTucker Evans <tuckerevans24@gmail.com>2019-02-18 08:10:10 -0500
committerTucker Evans <tuckerevans24@gmail.com>2019-02-18 08:10:10 -0500
commitb4dbd2cfa724476162fa6d35941a5d7cdc9c9524 (patch)
tree431af0b75efa29dfa3bab2868a78ab0eb29173c7 /CS2501/graph.c
parente8b1808eaf87a49e4c34ebbfb66854baa627418c (diff)
Adds all assignments not previously in a git repo
Diffstat (limited to 'CS2501/graph.c')
-rw-r--r--CS2501/graph.c116
1 files changed, 116 insertions, 0 deletions
diff --git a/CS2501/graph.c b/CS2501/graph.c
new file mode 100644
index 0000000..75d2353
--- /dev/null
+++ b/CS2501/graph.c
@@ -0,0 +1,116 @@
+#include <stdio.h>
+#include <stdlib.h>
+
+typedef struct agraph{
+ int matrix[100][100];
+} graph;
+
+extern graph *g = 0;
+
+void init_graph()
+{
+ int i;
+ g = malloc(sizeof(graph));
+ for (i = 0; i < 100; i++){
+ g->matrix[i][i] = -1;
+ }
+}
+
+int adjacent(x,y)
+int x,y;
+{
+ return g->matrix[x][y];
+}
+
+int* neighbors(x)
+int x;
+{
+ int i, j;
+ j = 1;
+ for(i = 0; i < 100; i++)
+ {
+ if(g->matrix[x][i]){
+ j++;
+ }
+ }
+ int *y;
+ y = calloc(j * sizeof(int));
+ j = 0;
+ for(i = 0; i < 100; i++) {
+ if (g->matrix[x][i]){
+ y[j++] = i;
+ }
+ }
+ return y;
+}
+
+int add_vertex(x)
+int x;
+{
+ if(!g){
+ init_graph();
+ }
+ if (g->matrix[x][x] == -1){
+ g->matrix[x][x] = 0;
+ return 1;
+ }
+ return 0;
+}
+
+int remove_vertex(x)
+int x;
+{
+ if(g->matrix[x][x] == -1){
+ return 0;
+ }
+ int i;
+ for(i = 0; i < 100; i++){
+ g->matrix[x][i] = 0;
+ g->matrix[i][x] = 0;
+ }
+ return 1;
+}
+
+int add_edge(x,y)
+int x,y;
+{
+ if (g->matrix[x][y]){
+ return 0;
+ }
+
+ g->matrix[x][y] = 1;
+ return 1;
+}
+
+int remove_edge(x,y)
+int x,y;
+{
+ if(g->matrix[x][y]){
+ g->matrix[x][y] = 0;
+ return 1;
+ }
+ return 0;
+
+}
+
+void printEdges()
+{
+ printf("Edges: \n" );
+ int i,j;
+ for (i = 0; i < 100; i++){
+ for(j = 0; j < 100; j++){
+ if(g->matrix[i][j] == 1)
+ printf("\t%d -> %d\n", i, j);
+ }
+ }
+}
+
+void printVertices()
+{
+ printf("Vertices:\n");
+ int i;
+ for(i = 0; i <100; i++)
+ if(g->matrix[i][i] != -1)
+ printf("\t%d\n", i);
+
+}