Untitled
unknown
plain_text
2 years ago
2.3 kB
6
Indexable
#include <stdio.h> #include <stdlib.h> // Node structure for adjacency list struct Node { int vertex; struct Node* next; }; // Adjacency list structure struct AdjList { struct Node* head; }; // Graph structure struct Graph { int vertices; struct AdjList* array; }; // Function to create a new node struct Node* createNode(int vertex) { struct Node* newNode = (struct Node*)malloc(sizeof(struct Node)); newNode->vertex = vertex; newNode->next = NULL; return newNode; } // Function to create a graph with a given number of vertices struct Graph* createGraph(int vertices) { struct Graph* graph = (struct Graph*)malloc(sizeof(struct Graph)); graph->vertices = vertices; // Create an array of adjacency lists graph->array = (struct AdjList*)malloc(vertices * sizeof(struct AdjList)); // Initialize each adjacency list as empty for (int i = 0; i < vertices; ++i) { graph->array[i].head = NULL; } return graph; } // Function to add an edge to an undirected graph void addEdge(struct Graph* graph, int src, int dest) { // Add an edge from src to dest struct Node* newNode = createNode(dest); newNode->next = graph->array[src].head; graph->array[src].head = newNode; // Since the graph is undirected, add an edge from dest to src as well newNode = createNode(src); newNode->next = graph->array[dest].head; graph->array[dest].head = newNode; } // Function to print the adjacency list representation of the graph void printGraph(struct Graph* graph) { for (int i = 0; i < graph->vertices; ++i) { printf("Adjacency list of vertex %d\n", i); struct Node* temp = graph->array[i].head; while (temp) { printf(" -> %d", temp->vertex); temp = temp->next; } printf("\n"); } } // Driver program to test the graph functions int main() { // Create a graph with 5 vertices struct Graph* graph = createGraph(5); // Add edges addEdge(graph, 0, 1); addEdge(graph, 0, 4); addEdge(graph, 1, 2); addEdge(graph, 1, 3); addEdge(graph, 1, 4); addEdge(graph, 2, 3); addEdge(graph, 3, 4); // Print the adjacency list representation of the graph printGraph(graph); return 0; }
Editor is loading...
Leave a Comment