Posts

Showing posts from January, 2021

Binary Search Tree and all traversals

#include <stdio.h> #include <stdlib.h> struct node { int key; struct node *left, *right; }; struct node* newNode(int item) { struct node* temp = (struct node*)malloc(sizeof(struct node)); temp->key = item; temp->left = temp->right = NULL; return temp; } void inorder(struct node* root) { if (root != NULL) { inorder(root->left); printf("%d ", root->key); inorder(root->right); } } void preorder(struct node* root) { if (root != NULL) {         printf("%d ", root->key); pre order(root->left); pre order(root->right); } } void postorder(struct node* root) { if (root != NULL) { post order(root->left); post order(root->right); printf("%d ", root->key); } } struct node* insert(struct node* node, int key) { if (node == NULL) return newNode(key); if (key < node->key) node->left = insert(node->left, key); else if (key > node->key) node->rig...

Binary Tree and all traversals

#include   <stdio.h> #include   <malloc.h> typedef   struct   node {      int   data ;      struct   node  * left ;      struct   node  * right ; }  node ; node  * create () {      node  * p ;      int   x ;      printf ( "Enter data(-1 for no data):" );      scanf ( " %d " , & x );      if  ( x  == - 1 )          return   NULL ;      p  = ( node  *) malloc ( sizeof ( node ));      p -> data  =  x ;      printf ( "Enter left child of  %d : \n " ,  x );      p -> left  =  create ();      printf ( "Enter...

Krushkal's Algo

#include<stdio.h> #include<stdlib.h> #define MAX 20 struct edge { int u; int v; int weight; struct edge *link; }*front = NULL; int parent[MAX]; struct edge tree[MAX]; int n;    int wt=0; int count=0;    int create_graph(); void make_tree(); void insert_tree(int i,int j,int wt); void insert_pque(int i,int j,int wt); struct edge *del_pque(); int main() { int i; printf(" MST from Kruskal's algorithm\n"); create_graph(); make_tree(); printf("\nEdges to be included in spanning tree are :\n"); for(i=1;i<=count;i++) { printf("%d->",tree[i].u); printf("%d\n",tree[i].v); } printf("\n Weight of this MST is : %d\n", wt); return 0; } int create_graph() { int i,wt,max_edges,origin,dest; printf("Enter number of nodes : "); scanf("%d",&n); max_edges=(n*(n-1))/2; for(i=1;i<=max_edges;i++) { printf("Enter edge %d(0 0 to quit): ",i); sc...

DFS in C

#include<conio.h> #include<stdio.h> int adj[15][15]; void dfs(int v, int n) {   int stk[n],i,top=-1,visited[n+1];   for(i=0;i<n+1;i++)   visited[i]=0;   top++;   stk[top]=v;   printf("DFS is : %d ",v);   visited[v]=1;   while(top>=0)   {       v=stk[top];       top-=1;       if(visited[v]==0)         {printf("%d ",v); visited[v]=1;}         for(i=1;i<=n;i++)         if(adj[v][i]==1 && visited[i]==0)       {top++;stk[top]=i;}   } } void create(int n) {     int maxnodes=n*((n-1)/2),i,u,v,j;     for(i=0;i<maxnodes;i++)     {         printf("Origin & dest:(0,0 to exit): ");         scanf("%d %d",&u,&v);         if(u==0 && v==0)             break;   ...

BFS in C

#include<conio.h> #include<stdio.h> int adj[15][15]; void bfs(int v, int n) {     int qu[n], visited[n+1], frnt=-1, rear=-1, i;     for(i=0;i<n+1;i++)     visited[i]=0;     printf("BFS is : %d ",v);     visited[v]=1;     rear++; frnt++;     qu[rear]=v;     while(frnt<=rear)     {         v=qu[frnt];         frnt++;         for(i=1;i<=n;i++)         {             if(adj[v][i]==1 && visited[i]==0)             {                 printf("%d ",i);                 visited[i]=1;                 rear++;                 qu[rear]=i;             }   ...

FloydWarshal Algorithm code

#include<limits.h> #include<bits/stdc++.h> #define v 4 #define V 4 using namespace std; void printSolution(int dist[][V]) {     cout<<"The following matrix shows the shortest distances"             " between every pair of vertices \n";     for (int i = 0; i < V; i++)     {         for (int j = 0; j < V; j++)         {                 cout<<dist[i][j]<<"     ";         }         cout<<endl;     } } void floyd (int graph[][V]) {     int dist[V][V], i, j, k;     for (i = 0; i < V; i++)         for (j = 0; j < V; j++)             dist[i][j] = graph[i][j];     for (k = 0; k < V; k++)     {         for (i = 0; i < V; i++)   ...

priority Queue using arrays

 #include<bits/stdc++.h> using namespace std; int min_key(int arr[], int s, bool accepted[]) {     int mn=100,min_index,i;     for(i=0;i<s;i++)     {         if(arr[i]<mn && accepted[i]==false)         {mn=arr[i];         min_index=i;}     }     return min_index; } int main() {     int s,i,mn,j,q,t,out_index;     cout<<"Enter the size of queue";     cin>>s;     int que[3][s];     cout<<"Enter the querries : ";     //data//inpriority//outpriority     int arr[s],inp[s],oup[s];     bool inserted[s], removed[s];     for(i=0;i<q;i++)     {         inserted[i]=false;         removed[i]=false;         cout<<"enter data : ";         cin>>arr[i];  ...