Untitled
unknown
plain_text
2 years ago
2.3 kB
7
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