Posts

Showing posts from October, 2024

Dijkstra's Algorithm Lists

 #include <stdio.h> #include <stdlib.h> #include <limits.h> #define MAX 100 #define INF INT_MAX typedef struct Edge {     int dest;     int weight;     struct Edge* next; } Edge; typedef struct Graph {     Edge* edges[MAX]; } Graph; int dist[MAX]; int pred[MAX]; int visited[MAX]; void create_graph(Graph* graph, int n, int gtype); void dijkstra(Graph* graph, int n, int source); void print_shortest_path(int source, int destination); int main() {     int n, gtype, source;     printf("Enter 1 for undirected graph and -1 for directed graph: ");     scanf("%d", &gtype);     printf("Enter the number of vertices: ");     scanf("%d", &n);          Graph graph = { {NULL} };     create_graph(&graph, n, gtype);          printf("Enter the source vertex: ");     scanf("%d", &source);     dijkstr...

Dijkstra's Algorithm Matrix

  #include <stdio.h> #include <stdlib.h> #include <limits.h> #define MAX 100 #define INF INT_MAX int adj[MAX][MAX]; int dist[MAX]; int pred[MAX]; int visited[MAX]; void create_graph(int n, int gtype); void dijkstra(int n, int source); void print_shortest_path(int source, int destination); int main() {     int n, gtype, source;     printf("Enter 1 for undirected graph and -1 for directed graph: ");     scanf("%d", &gtype);     printf("Enter the number of vertices: ");     scanf("%d", &n);     create_graph(n, gtype);     printf("Enter the source vertex: ");     scanf("%d", &source);     dijkstra(n, source);     for (int i = 0; i < n; i++) {         if (i != source) {             printf("Shortest path from vertex %d to vertex %d: ", source, i);             print_shortest_path...

BFS List

#include<stdio.h> #include<stdlib.h> #define MAX 100 #define initial 1 #define waiting 2 #define visited 3 struct Node { int vertex; struct Node* next; }; int queue[MAX],front=-1,rear=-1; int state[MAX]; struct Node* adj[MAX]; void create_graph(int n,int gtype); void insert_queue(int v); int delete_queue(); int isEmpty_queue(); void BFT(int n); void BFS(int start,int n); void add_edge(int src,int dest); struct Node* create_node(int v); int main() { int gtype,n; printf("Enter 1 for undirected graph and -1 for directed graph:"); scanf("%d",&gtype); printf("Enter the number of vertices:"); scanf("%d",&n); create_graph(n,gtype); BFT(n); return 0; } void create_graph(int n,int gtype) { int max_edges,src,dest; if(gtype==1) max_edges=(n*(n-1))/2; else if(gtype==-1) max_edges=(n*(n-1)); for(int i=0;i<n;i++) adj[i]=NULL; for(int i=0;i<max_edges;i++) { printf("Enter edge %d (press -1 and -1 to quit):...

BFS Matrix

#include<stdio.h> #include<stdlib.h> #define MAX 100 #define initial 1 #define waiting 2 #define visited 3 int adj[MAX][MAX];   int state[MAX];      int queue[MAX], front = -1, rear = -1;  void create_graph(int n, int gtype); void BF_Traversal(int n); void BFS(int v, int n); void insert_queue(int vertex); int delete_queue(); int isEmpty_queue(); int main() {     int n, gtype;          printf("Enter 1 for undirected graph and -1 for directed graph: ");     scanf("%d", &gtype);     printf("Enter the number of vertices: ");     scanf("%d", &n);          create_graph(n, gtype);          BF_Traversal(n);          return 0; } void create_graph(int n, int gtype) {     int max_edges, src, dest;          if (gtype == 1)         max_edges = (n * (n - 1)) /...