Friday, November 15, 2019

BINARY TREE

Implementation of Binary Tree

*************
#include<stdio.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 right child of %d:\n",x);
p->right=create();
return p;
}

void preorder(node *t) //address of root node is passed in t
{
if(t!=NULL)
{
printf("\n%d",t->data); //visit the root
preorder(t->left); //preorder traversal on left subtree
preorder(t->right); //preorder traversal om right subtree
}
}
int main()

node *root;
root=create();
printf("\nThe preorder traversal of tree is:\n");
preorder(root);
return 0;
}

Binary Search Tree

#include<stdio.h>
#include<conio.h>
#include<stdlib.h>

struct node
{
 int data;
 struct node *left;
 struct node *right;
};


void inorder(struct node *root)
{
 if(root)
 {
  inorder(root->left);
  printf("  %d",root->data);
  inorder(root->right);
 }
}

int main()
{
 int n , i;
 struct node *p , *q , *root;
 printf("Enter the number of nodes to be insert: ");
 scanf("%d",&n);

 printf("\nPlease enter the numbers to be insert: ");

 for(i=0;i<i++)
 {
  p = (struct node*)malloc(sizeof(struct node));
  scanf("%d",&p->data);
  p->left = NULL;
  p->right = NULL;
  if(i == 0)
  {
   root = p; // root always point to the root node
  }
  else
  {
   q = root;   // q is used to traverse the tree
   while(1)
   {
    if(p->data > q->data)
    {
     if(q->right == NULL)
      {
      q->right = p;
      break;
      }
     else
      q = q->right;
    }
    else
    {
     if(q->left == NULL)
      {
      q->left = p;
      break;
      }
     else
      q = q->left;
    }
   }

  }

 }

printf("\nBinary Search Tree nodes in Inorder Traversal: ");
inorder(root);
printf("\n");

return 0;
}


























Saturday, November 2, 2019

DATA STRUCTURE

Bubble Sort
Insertion Sort
Selection Sort
Quick Sort
Merge Sort
Heap Sort  
[1]  Bubble Sort :        
#include <stdio.h>
int main()
{
    int a[20],n,i,j,temp;
    printf("\nHow many numbers are there : ");
    scanf("%d",&n);
    
    printf("\nEnter the numbers ");
    for(i=0; i<n; i++)
    {
        scanf("%d",&a[i]);
    }
    
   for(i=0; i<n-1; i++)
    {
        for(j=0; j< n-1-i; j++)
        {
            if(a[j] > a[j+1])
            {
                temp = a[j];
                a[j] = a[j+1];
                a[j+1] = temp;
            }
        }
    }
    printf("\nNumbers in sorted order are : ");
    for(i=0; i<n; i++)
    {
        printf("\n%d",a[i]);
    }
    return 0;
}

[2] Insertion Sort : 
#include <stdio.h>
/*Program Insertion Sort*/
int main()
{
    int a[20], i, j, n, temp;

    printf("Enter how many numbers are there :");
    scanf("%d",&n);
    
    printf("Enter the numbers : ");
    for(i=0; i<n; i++)
    {
        scanf("%d",&a[i]);
        temp=a[i];
        for(j=i-1; j>=0; j--)
        {
            if(temp > a[j])
            {
                break;
            }
            else
                a[j+1] = a[j];
        }
        a[j+1] = temp;
    }

    printf("\nSorted numbers are : \n ");
    for(i=0; i<n; i++)
        printf("\n%d",a[i]);

    return 0;

}


[3]Selection Sort :
#include <stdio.h>

int main()
{
    int a[20],n,i,j,temp;
    printf("\nHow many numbers are there : ");
    scanf("%d",&n);

    
    printf("\nEnter the numbers ");
    for(i=0; i<n; i++)
    {
        scanf("%d",&a[i]);
    }
    
    for(i=0; i<n-1; i++)
    {
        for(j=i+1; j<n; j++)
        {
            if(a[i] > a[j])
            {
                temp = a[i];
                a[i] = a[j];
                a[j] = temp;
            }
        }
    }
    printf("\nNumbers in sorted order are : ");
    for(i=0; i<n; i++)
    {
        printf("\n%d",a[i]);
    }
    return 0;
}


[4] Quick Sort :
#include<stdio.h>
void quicksort(int number[25],int first,int last){
   int i, j, pivot, temp;

   if(first<last){
      pivot=first;
      i=first;
      j=last;

      while(i<j){
         while(number[i]<=number[pivot]&&i<last)
            i++;
         while(number[j]>number[pivot])
            j--;
         if(i<j){
            temp=number[i];
            number[i]=number[j];
            number[j]=temp;
         }
      }

      temp=number[pivot];
      number[pivot]=number[j];
      number[j]=temp;
      quicksort(number,first,j-1);
      quicksort(number,j+1,last);

   }
}

int main(){
   int i, count, number[25];

   printf("How many elements are u going to enter?: ");
   scanf("%d",&count);

   printf("Enter %d elements: ", count);
   for(i=0;i<count;i++)
      scanf("%d",&number[i]);

   quicksort(number,0,count-1);

   printf("Order of Sorted elements: ");
   for(i=0;i<count;i++)
      printf(" %d",number[i]);

   return 0;
}