Thursday, October 13, 2011

Rest In Peace Dennis Ritche : Creator of C & unix

/*A 'c' program in memory of Dennis Ritche*/

#include
int main(){
printf("%c%c%c%c%c%c%c%c%c%c%c%c%c",printf("\n")*82,printf("\n")*46,printf("\n")*73,printf("\n")*46,printf("\n")*80,printf("\n")*46,printf("\n")*32,printf("\n")*82,printf("\n")*105,printf("\n")*99,printf("\n")*104,printf("\n")*105,printf("\n")*101);
getch();
return 0;
}

Sunday, October 2, 2011

Data Structure C program Binary Search Tree Dev c++


Data Structures in C Program Binary Search Tree


 #include <stdio.h>  
 struct bstree{  
     int info;  
     struct bstree* left;  
     struct bstree* right;  
     };  
 typedef struct bstree* node;  
 node root;  
 node create(int x)  
 {  
    node abh;  
    abh=(node)malloc(sizeof(struct bstree));  
    if(abh==NULL)  
    {  
    printf("OUT OF MEMORY!!!!FATAL ERROR");  
    exit(0);  
    }  
    else  
    {  
      abh->info=x;  
      abh->left=NULL;  
      abh->right=NULL;  
    }  
    return abh;  
 }  
 void insert(int x)  
 {  
    node at=create(x);  
    if(root==NULL)  
    {  
     root=at;  
    }  
    else  
    {  
      node prev=NULL;  
      node cur=root;  
      while(cur!=NULL)  
      {  
       prev=cur;  
       if(x>cur->info)  
       cur=cur->right;  
       else  
       cur=cur->left;  
      }  
      if(x>prev->info)  
       prev->right=at;  
      else  
       prev->left=at;  
    }  
 }  
 node findmin(node av)  
 {  
    if(av->left!=NULL && av->right==NULL)  
    return av->left;  
    else   
    return av;  
 }  
 void delete(int x)  
 {  
      node prev=NULL;  
      node cur=root;  
      node anj;  
      while(cur!=NULL && cur->info!=x)  
      {  
       prev=cur;  
       if(x>cur->info)  
       cur=cur->right;  
       else  
       cur=cur->left;  
      }  
      if(cur==NULL)  
      {  
      printf("NOT FOUND");  
      }  
      else  
      {  
        printf("Deleting %d ",cur->info);  
           if(cur->left && cur->right )//TWO CHILDREN  
           {  
            anj=cur->right;//move right  
            node ver=cur;//previous  
            if(anj->left==NULL)//if moving to extreme left is not possible  
            {  
          cur->info=anj->info;  
          cur->right=anj->right;  
          free(anj);  
         }else{  
         while(anj->left!=NULL)//move to extreme left  
         {   
          ver=anj;  
          anj=anj->left;  
         }  
         cur->info=anj->info;  
         ver->left=NULL;  
         free(anj);  
         }  
           }  
           else  
           {  
                  if(cur->right!=NULL && cur->left==NULL)//only right  
              {  
             //printf("c2");  
                    if(cur->info>prev->info)  
                       prev->right=cur->right;  
                    else  
                       prev->left=cur->right;  
                    free(cur);  
                    return;  
               }else if(cur->right==NULL && cur->left!=NULL)//only left  
               {  
              //printf("c3");  
              if(cur->info>prev->info)  
                       prev->right=cur->left;  
                   else  
                       prev->left=cur->left;  
                    free(cur);  
           }   
           else if(cur->right==NULL && cur->left==NULL)//leaf  
              {  
               //printf("c4");  
                       if(cur->info>prev->info)  
                       prev->right=NULL;  
                       else  
                       prev->left=NULL;  
                       free(cur);  
               }  
           }  
      }      
 }  
 void inorder(node root)  
 {  
  if(root)  
  {  
  inorder(root->left);  
  printf("[%d] ", root->info);  
  inorder(root->right);  
  }  
 }  
 node insert_rec(node r,int data)  
 {  
  if(r==NULL)  
  {  
   r=create(data);  
   }  
  else if(data>r->info)  
   r->right=insert_rec(r->right,data);//r->right is important to create link or else isolated node is made  
  else  
   r->left=insert_rec(r->left,data);  
  return r;//good  
 }  
 int main()  
 {  
   root=NULL;  
   /*add_node(5);  
   add_node(1);  
   add_node(6);*/  
   root=insert_rec(root,5);//root= for first node to create link  
   insert_rec(root,1);  
   insert_rec(root,6);  
   insert_rec(root,3);  
   insert_rec(root,4);  
   insert_rec(root,-1);  
   insert_rec(root,8);  
   delete(6);  
   delete(1);  
   insert_rec(root,100);  
   insert_rec(root,-3);   
   delete(6);  
   delete(5);  
   inorder(root);  
   getch();  
 }  

Data Structure C program Doubly Linked List Dev c++


Data Structures in C Program Doubly Linked List


 #include <stdio.h>  
 #include <stdlib.h>  
 struct dllist {  
  int data;  
  struct dllist *next;  
  struct dllist *prev;  
 };  
 typedef struct dllist* node;  
 void inserts(node);  
 void inserte(node);  
 void insertm(node,node);  
 void removen(node);  
 node find(int);  
 void dispaly(int);  
 node start=NULL;  
 node end=NULL;  
 void inserts(node temp)  
 {  
    if(start==NULL)  
    {  
    temp->next=NULL;  
    temp->prev=NULL;  
    start=temp;  
    end=temp;  
    }  
    else  
    {  
     temp->prev=NULL;  
     temp->next=start;  
     start->prev=temp;  
     start=temp;  
     }  
 }  
 void inserte(node temp)  
 {  
    if(end==NULL)  
    {  
    inserts(temp);  
    }  
    else  
    {  
      temp->prev=end;  
      end->next=temp;  
      temp->next=NULL;  
      end=temp;  
    }  
 }  
  void insertm(node temp,node after)  
  {  
    temp->prev=after;  
    temp->next=after->next;  
    if(after->next==NULL)  
    {  
     end=temp;  
    }  
    else  
    {  
      (after->next)->prev=temp;  
    }  
    after->next=temp;  
  }  
 void removen(node x)  
 {  
   if(x->prev==NULL && x->next==NULL)  
   {  
    start=NULL;  
    end=NULL;  
   }  
   else if(x->prev==NULL)  
   {  
    (x->next)->prev=NULL;  
    start=x->next;  
    free(x);  
   }else if(x->next==NULL)  
   {  
     (x->prev)->next=NULL;  
     end=x->prev;  
     free(x);  
   }else  
   {  
      x->prev->next=x->next;  
      x->next->prev=x->prev;  
      free(x);  
   }  
 }  
 void display(int x)  
 {  
    node temp=(node)malloc(sizeof(struct dllist));  
    if(start==NULL)  
    printf("Empty list\n");  
    else  
    {  
      printf("List is\n");  
    if(x==1)  
    {  
    temp=start;  
    while(temp!=NULL)  
    {  
     printf("%d\n",temp->data);  
     temp=temp->next;  
    }  
    }  
    else  
    {  
    temp=end;  
    while(temp!=NULL)  
    {  
     printf("%d\n",temp->data);  
     temp=temp->prev;  
    }  
    }  
   }  
 }  
 node find(int x)  
 {  
    node temp=start;  
    while(temp!=NULL)  
    {  
    if(temp->data==x)  
    return temp;  
    temp=temp->next;  
    }  
    printf("NOT FOUND DATA !!!PROGRAM WILL EXIT\n");  
    exit(0);  
 }  
 int main()  
 {  
   printf("1.Insert at Start\n2.Insert at End\n3.Insert after some node\n4.Delete\n5.Display from start\n6.Display from end\n7.Exit\n");  
   int ch,x;  
   node temp,temp2;  
   scanf("%d",&ch);  
   while(ch!=7)  
   {  
   switch(ch)  
   {  
    case 1:temp=(node)malloc(sizeof(struct dllist));  
        printf("Enter data:");  
        scanf("%d",&temp->data);  
        inserts(temp);  
        break;  
    case 2:temp=(node)malloc(sizeof(struct dllist));  
        printf("Enter data:");  
        scanf("%d",&temp->data);  
        inserte(temp);  
        break;  
    case 3:temp=(node)malloc(sizeof(struct dllist));  
        printf("Enter data:");  
        scanf("%d",&temp->data);  
        printf("Enter data after which you want to insert:");  
        scanf("%d",&x);  
        temp2=find(x);  
        insertm(temp,temp2);  
        break;  
    case 4:  
        printf("Enter data");  
        scanf("%d",&x);  
        temp=find(x);  
        removen(temp);  
        break;  
    case 5:display(1);  
        break;  
    case 6:display(60);  
        break;  
    default:printf("WRONG CHOICE ENTER AGAIN\n");  
    }  
    printf("1.Insert at Start\n2.Insert at End\n3.Insert after some node\n4.Delete\n5.Display from start\n6.Display from end\n7.Exit\n");  
   scanf("%d",&ch);  
   }  
 }  

Data Structure C program Queue using Linked List Dev c++

 #include <stdio.h>  
struct queue{
int data;
struct queue* next;
};
typedef struct queue* node;
node front=NULL,rear=NULL;
/* declaration of function */
void display();
void enqueue(node);
int dequeue();
void enqueue(node x)
{
if(front==NULL)//for inserting first element
{
rear=x;
front=x;
rear->next=NULL;//IMP
}
else//general case
{
rear->next=x;
rear=x;
rear->next=NULL;
}
}
int dequeue()
{
int x;
if(front==NULL)//if empty
{
printf("Empty queue\n");
return;
}
else//if not empty
{
node temp=front;
x=temp->data;
front=front->next;
free(temp);
}
if(front==NULL)//if deleted the last element
{
rear=NULL;
}
return x;
}
void display()
{
if(front==NULL)
{
printf("Queue Empty\n");
return;
}
node temp=front;
printf("Queue is:-\n");
while(temp!=NULL)
{
printf("%d\n",temp->data);
temp=temp->next;
}
}
int main()
{
int ch;
printf("1.Enqueue\n2.Dequeue\n3.Display\n4.Exit\n");
scanf("%d",&ch);
node temp;
int x;
while(ch!=4)
{
switch(ch)
{
case 1:
temp=(struct queue*)malloc(sizeof(struct queue));
printf("Enter data:");
scanf("%d",&(*temp).data);
enqueue(temp);
break;
case 2:
x=dequeue();
printf("Removed %d\n",x);
break;
case 3:
display();
break;
default:printf("WRONG CHOICE ENTER AGAIN\n");
}
printf("1.Enqueue\n2.Dequeue\n3.Display\n4.Exit\n");
scanf("%d",&ch);
}
}

Data Structure C program stack using linked list Dev c++


Data Structures in C Program Linked List Stack


 #include <stdio.h>  
 struct stack{  
     int data;  
     struct stack* next;  
     };  
 typedef struct stack* node;  
 void push(node);  
 int pop();  
 node top=NULL;  
 void push(node temp)  
 {  
    if(top==NULL)//if inserting first elsement  
    {  
     top=temp;//|value||null(top)|  
     top->next=NULL;  
    }  
    else//general case  
    {  
      temp->next=top;  
      top=temp;  
      //|newvalue(TOP)||->|value||NULL|  
      /*new element becomes new top*/  
    }  
 }  
 int pop()  
 {  
   node temp;  
   int x;  
   if(top==NULL)//if top is null   
   {  
    printf("Stack Empty\n");  
   }  
   else  
   {  
     temp=top;  
     x=temp->data;  
     top=top->next;  
     free(temp);  
   }  
   return x;  
 }  
 void display()  
 {  
  node temp;  
  if(top==NULL)  
  {  
    printf("empty stack\n");  
  }  
  else  
  {  
    temp=top;  
    printf("Stack is:-\n");  
    while(temp!=NULL)  
    {  
      printf("%d\n",temp->data);  
      temp=temp->next;  
    }  
  }  
 }  
 int main()  
 {  
   int ch;  
   printf("1.Push\n2.Pop\n3.Display\n4.Exit\n");  
   scanf("%d",&ch);  
   node temp;  
   int x;  
   while(ch!=4)  
   {  
    switch(ch)  
    {  
     case 1:  
         temp=(struct stack*)malloc(sizeof(struct stack));  
         printf("Enter data:");  
         scanf("%d",&(*temp).data);  
         push(temp);  
         break;  
     case 2:  
         x=pop();  
         printf("Removed %d\n",x);  
         break;  
     case 3:  
         display();  
         break;  
     default:printf("WRONG CHOICE ENTER AGAIN\n");  
    }  
    printf("1.Push\n2.Pop\n3.Display\n4.Exit\n");  
    scanf("%d",&ch);  
   }  
 }  

Data Structure C program singly linked list Dev c++

 #include <stdio.h>  
#include <conio.h>
void badd();
void eadd();
void madd();
void del();
void display();
struct node{
int data;
struct node* next;
};
typedef struct node position;
position* find(int);
position* start;
void badd()
{
position *temp=(position*)malloc(sizeof(position));
printf("Enter Data:");
scanf("%d",&temp->data);
if(start==NULL)
{
temp->next=NULL;
start=temp;
}
else
{
temp->next=start;
start=temp;
}
}
void eadd()//assuming that link list is not empty
{
position *temp=(position*)malloc(sizeof(position));
printf("Enter Data:");
scanf("%d",&temp->data);
position *temp2=start;
while(temp2->next!=NULL)
temp2=temp2->next;
temp2->next=temp;
temp->next=NULL;
}
position* find(int x)
{
position* temp=start;
while(temp->data!=x && temp!=NULL)
{
temp=temp->next;
}
return temp;
}
void madd()
{
int x;
position *temp=(position*)malloc(sizeof(position));
printf("Enter Data:");
scanf("%d",&temp->data);
printf("Enter element's value after which you want to add new data :");
scanf("%d",&x);
position *temp2=find(x);
if(temp2==NULL)
printf("Element not found\n");
else
{
temp->next=temp2->next;
temp2->next=temp;
}
}
void del()
{
int x;
position *temp,*prev;
printf("Enter element:");
scanf("%d",&x);
temp=start;
while(temp->data!=x && temp!=NULL)
{
prev=temp;
temp=temp->next;
}
if(!temp)
{
printf("NOT FOUND\n");
return;
}
if(temp==start)
{
start=start->next;
free(temp);
}
else
{
prev->next=temp->next;
free(temp);
}
}
void display()
{
if(start==NULL)
{
printf("EMPTY LINK LIST\n");
return;
}
position *temp=start;
printf("LINK LIST is:-\n");
while(temp!=NULL)
{
printf("%d\n",temp->data);
temp=temp->next;
}
printf("\n");
}
int main()
{
int ch;
printf("1.Add at start\n2.Add in between\n3.Add At the end\n4.Delete\n5.Display\n6.exit\n");
scanf("%d",&ch);
while(ch!=6)
{
switch(ch)
{
case 1:badd();
break;
case 2:madd();
break;
case 3:eadd();
break;
case 4:del();
break;
case 5:display();
break;
default:printf("WRONG CHOICE");
}
printf("1.Add at start\n2.Add in between\n3.Add At the end\n4.Delete\n5.Display\n6.exit\n");
scanf("%d",&ch);
}
}

Digital Sort C program Dev C++

 #define MAX 5  
int main()
{
int x=1,i,flag=1,a[MAX],b[MAX],j=0,k;
for(i=0;i<MAX;i++)
{
printf("Enter Number:");
scanf("%d",&a[i]);
}
while(flag)
{
flag=0;
for(i=0;i<=9;i++)
{
for(k=0;k<MAX;k++)
{
if((a[k]/x)%10==i)
{printf("%d %% %d\n",a[k],x);
b[j++]=a[k];
}
if((a[k]/x)%10!=0)
flag=1;
}
}
x*=10;
for(i=0;i<MAX;i++)
{
a[i]=b[i];
printf("%d\n",a[i]);
}
printf("f%d\n",flag);
getch();
j=0;
}
printf("Sorted array is\n");
for(i=0;i<MAX;i++)
{
printf("%d\n",a[i]);
}
getch();
}

Data Structure C program Doubly Ended Queue Deque Dev c++


Data Structures in C Program Double Ended queue deque


 #include <stdio.h>  
 #define MAX 20  
 struct queue{  
       int x[MAX];  
       int front;  
       int rear;  
       }q;  
       void enqueueRight(int);  
       void display();  
       int dequeueLeft();  
       void enqueueLeft(int);  
       int dequeueRight();  
 int main()  
 {  
   q.front=-1;  
   q.rear=-1;  
   int ch,x,flag=1,c2;  
   printf("1.Input Restricted Deque\n2.Output Restricted Deque\n\n");   
   scanf("%d",&c2);  
   if(c2==1)  
   {  
   while(flag)  
   {  
    printf("1.Enqueue\n2.Dequeue Right\n3.Dequeue Left\n4.Display\n5.Exit\n");   
    scanf("%d",&ch);  
    switch(ch)  
    {  
     case 1:printf("Enter element:");  
        scanf("%d",&x);  
        enqueueRight(x);  
        break;  
     case 2:x=dequeueRight();  
        printf("Removed %d\n",x);  
        break;  
     case 3:x=dequeueLeft();  
        printf("Removed %d\n",x);  
        break;  
     case 4:display();  
        break;  
     case 5:flag=0;  
        break;  
     default:printf("Wrong choice\n");  
     }  
   }  
   }else if (c2==2)  
   {  
   while(flag)  
   {  
    printf("1.Enqueue Left\n2.Enqueue Right\n3.Dequeue\n4.Display\n5.Exit\n");   
    scanf("%d",&ch);  
    switch(ch)  
    {  
     case 1:printf("Enter element:");  
        scanf("%d",&x);  
        enqueueLeft(x);  
        break;  
     case 2:printf("Enter element:");  
        scanf("%d",&x);  
        enqueueRight(x);  
        break;  
     case 3:x=dequeueLeft();  
        printf("Removed %d\n",x);  
        break;  
     case 4:display();  
        break;  
     case 5:flag=0;  
        break;  
     default:printf("Wrong choice\n");  
     }  
   }  
   }else  
   {  
      printf("Wrong choice\n");  
      getch();  
   }  
 }  
 void enqueueRight(int x)  
 {  
    if(q.rear==MAX)  
    printf("Queue full from Right\n");  
    else  
    {  
    q.x[++q.rear]=x;  
    if(q.front==-1)  
    q.front=0;  
    }  
 }  
 void enqueueLeft(int x)  
 {  
    if(q.rear==-1 && q.front==-1)  
    enqueueRight(x);  
    else if(q.front==0)  
    printf("Queue full from Left\n");  
    else  
    {  
    q.x[--q.front]=x;  
    }  
 }  
 int dequeueLeft()  
 {  
   int x;  
    if(q.rear==-1 && q.front==-1)  
    printf("Queue Empty\n");  
    else if(q.front==q.rear)  
    {  
      x=q.x[q.front];  
      q.front=q.rear=-1;  
      return x;  
    }else  
    return q.x[q.front++];  
 }  
 int dequeueRight()  
 {  
   int x;  
    if(q.rear==-1 && q.front==-1)  
    printf("Queue Empty\n");  
    else if(q.front==q.rear)  
    {  
      x=q.x[q.front];  
      q.front=q.rear=-1;  
      return x;  
    }else  
    return q.x[q.rear--];  
 }  
 void display()  
 {  
    printf("Queue is\n");  
    int i;  
    for(i=q.front;i<=q.rear;i++)  
    printf("%d\n",q.x[i]);  
 }  

Data Structure C program Stack using Array Dev c++

 #include <stdio.h>  
#include <conio.h>
#define MAX 20
int top=-1,ch;
int a[MAX];
int main(){
void menu();
void push();
void pop();
void display();
menu();
while(ch!=3){
switch(ch){
case 1:
push();
display();
break;
case 2:
pop();
display();
break;
}
menu();
}
}
void push()
{
if(top==MAX-1)
printf("Stack is full\nStack overflow\n");
else
{
printf("Enter element:");
scanf("%d",&a[++top]);
}
}
void pop()
{
if(top==-1)
printf("Stack is emplty\nSTACK UNDERFLOW\n");
else
{
top--;
printf("Deleted %d\n",a[top+1]);
}
}
void display()
{
int i=0;
printf("\nStack is :\n");
for(i=top;i>=0;i--)
printf("%d\n",a[i]);
}
void menu()
{
printf("\n1.Push\n2.Pop\n3.Exit\n");
scanf("%d",&ch);
while(ch<1 || ch>3)
{
printf("Enter valid choice 1,2 or 3\n");
scanf("%d",&ch);
}
}

Data Structure C program Queue using array Dev c++

 #include <stdio.h>  
#define MAX 20
struct queue{
int x[MAX];
int front;
int rear;
}q;
void enqueue(int);
void display();
int dequeue();
int main()
{
q.front=-1;
q.rear=-1;
int ch,x,flag=1;
while(flag)
{
printf("1.Enqueue\n2.Dequeue\n3.Display\n4.Exit\n");
scanf("%d",&ch);
switch(ch)
{
case 1:printf("Enter element:");
scanf("%d",&x);
enqueue(x);
break;
case 2:x=dequeue();
printf("Removed %d\n",x);
break;
case 3:display();
break;
case 4:flag=0;
break;
defalt:printf("Wrong choice\n");
}
}
}
void enqueue(int x)
{
if(q.rear==MAX)
printf("Queue full\n");
else
{
q.x[++q.rear]=x;
if(q.front==-1)
q.front=0;
}
}
int dequeue()
{
if(q.rear==-1 && q.front==-1)
printf("Queue Empty\n");
else
return q.x[q.front++];
}
void display()
{
printf("Queue is\n");
int i;
for(i=q.front;i<=q.rear;i++)
printf("%d\n",q.x[i]);
}

Data Structure C program Prefix Conversion Dev c++

 #include <stdio.h>  
#include <conio.h>
#define MAX 20
struct stack{
int top;
char str[MAX];
}s;//stack
char ex[MAX];//expression
char string[MAX];//string
int main(){
s.top=-1;
void push(char);
char pop();
int isoperand(char);
int getpriority(char);
printf("Enter Expression:");
scanf("%s",ex);
int i=strlen(ex)-1,j=-1,p1,p2;
while(i>=0)
{
if(isoperand(ex[i]))
{
printf("op\n");
string[++j]=ex[i];
}
else if(ex[i]==')')
{
push(')');
printf(")\n");
}
else if(ex[i]=='(')
{
printf("(\n");
while(s.str[s.top]!=')')
{
string[++j]=pop();
}
pop();
}else
{
p1=getpriority(ex[i]);
p2=getpriority(s.str[s.top]);
printf("%d<%d %d\n",p1,p2,p1<p2);
while(p1<p2 && s.top!=-1)
{
string[++j]=pop();
p2=getpriority(s.str[s.top]);
}
push(ex[i]);
}
i--;
}
while(s.top>-1)
string[++j]=pop();
printf("%s",strrev(string));
getch();
}
void push(char x)
{
if(s.top==MAX-1)
printf("Stack is full\nStack overflow\n");
else
{
s.top++;
s.str[s.top]=x;
printf("push %c\n",x);
getch();
}
}
char pop()
{
if(s.top==-1)
{
printf("Stack is emplty\nSTACK UNDERFLOW\n");
getch();
}
else
{
s.top--;
printf("pop %c\n",s.str[s.top+1]);
getch();
return s.str[s.top+1];
}
}
int isoperand(char x)
{
x=tolower(x);
if(x>='a' && x<='z')
return 1;
else
return 0;
}
int getpriority(char x){
if(x=='^')
return 3;
else if(x=='*' || x=='/')
return 2;
else if(x=='+' || x=='-')
return 1;
else
return 0;
}

Data Structure C program Postfix Evaluation Dev c++

 #include <stdio.h>  
#include <conio.h>
#define MAX 20
struct stack{
int top;
float str[MAX];
}s;//stack
char postfix[MAX];//postfix
void push(float);
float pop();
int isoperand(char);
float operate(float,float,char);
int main()
{
int i=0;
printf("Enter Expression:");
scanf("%s",postfix);
float ans,op1,op2;
while(postfix[i]!='\0')
{
if(isoperand(postfix[i]))
push(postfix[i]-48);
else
{
op1=pop();
op2=pop();
ans=operate(op1,op2,postfix[i]);
push(ans);
printf("%f %c %f %f\n",op2,postfix[i],op1,ans);
}
i++;
}
printf("%f",s.str[s.top]);
getch();
}
int isoperand(char x)
{
if(x>='0' && x<='9')
return 1;
else
return 0;
}
void push(float x)
{
if(s.top==MAX-1)
printf("Stack is full\nStack overflow\n");
else
{
s.top++;
s.str[s.top]=x;
}
}
float pop()
{
if(s.top==-1)
{
printf("Stack is emplty\nSTACK UNDERFLOW\n");
getch();
}
else
{
s.top--;
return s.str[s.top+1];
}
}
float operate(float op1,float op2,char a)
{
switch(a)
{
case '+':return op2+op1;
case '-':return op2-op1;
case '*':return op2*op1;
case '/':return op2/op1;
case '^':return pow(op2,op1);
}
}

Data Structure C program Postfix Conversion Dev c++

 #include <stdio.h>  
#include <conio.h>
#define MAX 20
struct stack{
int top;
char str[MAX];
}s;//stack
char ex[MAX];//expression
char string[MAX];//string
int main(){
s.top=-1;
void push(char);
char pop();
int isoperand(char);
int getpriority(char);
printf("Enter Expression:");
scanf("%s",ex);
int i=0,j=-1,p1,p2;
while(ex[i]!='\0')
{
if(isoperand(ex[i]))
{
printf("op\n");
string[++j]=ex[i];
}
else if(ex[i]=='(')
{
push('(');
printf("(\n");
}
else if(ex[i]==')')
{
printf(")\n");
while(s.str[s.top]!='(')
{
string[++j]=pop();
}
pop();
}else
{
p1=getpriority(ex[i]);
p2=getpriority(s.str[s.top]);
printf("%d<=%d %d\n",p1,p2,p1<=p2);
while(p1<=p2 && s.top!=-1)
{
string[++j]=pop();
p2=getpriority(s.str[s.top]);
}
push(ex[i]);
}
i++;
}
while(s.top>-1)
string[++j]=pop();
printf("%s",string);
getch();
}
void push(char x)
{
if(s.top==MAX-1)
printf("Stack is full\nStack overflow\n");
else
{
s.top++;
s.str[s.top]=x;
printf("push %c\n",x);
getch();
}
}
char pop()
{
if(s.top==-1)
{
printf("Stack is emplty\nSTACK UNDERFLOW\n");
getch();
}
else
{
s.top--;
printf("pop %c\n",s.str[s.top+1]);
getch();
return s.str[s.top+1];
}
}
int isoperand(char x)
{
x=tolower(x);
if(x>='a' && x<='z')
return 1;
else
return 0;
}
int getpriority(char x){
if(x=='^')
return 3;
else if(x=='*' || x=='/')
return 2;
else if(x=='+' || x=='-')
return 1;
else
return 0;
}

Data Structure C program Circular Queue Dev c++

 #include <stdio.h>  
#define MAX 3
struct queue{
int x[MAX];
int front;
int rear;
}q;
void enqueue(int);
void display();
int dequeue();
int main()
{
q.front=-1;
q.rear=-1;
int ch,x,flag=1;
while(flag)
{
printf("1.Enqueue\n2.Dequeue\n3.Display\n4.Exit\n");
scanf("%d",&ch);
switch(ch)
{
case 1:printf("Enter element:");
scanf("%d",&x);
enqueue(x);
break;
case 2:x=dequeue();
printf("Removed %d\n",x);
break;
case 3:display();
break;
case 4:flag=0;
break;
defalt:printf("Wrong choice\n");
}
}
}
void enqueue(int x)
{
if(q.front==(q.rear+1)%MAX)
printf("Queue full\n");
else if(q.rear==q.front)
{q.rear=q.front=-1;}
else
{
q.rear=(q.rear+1)%MAX;
q.x[q.rear]=x;
if(q.front==-1)
q.front=0;
}
}
int dequeue()
{
int x;
if(q.rear==-1 && q.front==-1)
printf("Queue Empty\n");
else if(q.rear==q.front)
{
x=q.x[q.front];
q.front=q.rear=-1;
return x;
}else
{
x=q.x[q.front];
q.front=q.front+1%MAX;
return x;
}
}
void display()
{
printf("%d %d Queue is\n",q.front,q.rear);
int i;
if(q.front<=q.rear)
{
for(i=q.front;i<=q.rear;i++)
printf("%d\n",q.x[i]);
}
else
{
for(i=q.front;i<=MAX-1;i++)
printf("%d\n",q.x[i]);
for(i=0;i<=q.rear;i++)
printf("%d\n",q.x[i]);
}
}

Insertion Sort C program for Dev c++


C Program Insertion Sorting 


 #include<stdio.h>  
 #include<conio.h>  
 #include<stdlib.h>  
 void insersort(int *,int );  
 int main()  
 {  
    int i,n,*a;  
    printf("\nEnter array size:");  
    scanf("%d",&n);  
    a=(int*)malloc(n*2);  
    printf("\nEnter array::\n");  
    for(i=1;i<=n;i++)  
    {  
            scanf("%d",a+i);printf("\n");  
    }  
    insersort(&a[0],n);  
    printf("\n\nArray in sorted order is-::\n");  
    for(i=1;i<=n;i++)  
    {  
            printf("%d",*(a+i));printf("\n");  
    }  
    getch();  
    return 0;  
 }  
 void insersort(int *b, int s)  
 {  
    int i,j,tmp;  
    for(i=1;i<=s;i++)  
    {  
             tmp=*(b+i);  
             for(j=i-1;j>0&&tmp<*(b+j);j--)  
             *(b+j+1)=*(b+j);   
               *(b+j+1)=tmp;  
    }  
 return;  
 }  

Shell Sort C program for Dev C++

 void shellsort(int a[],int n)  
{
int i,j,temp,inc=n/2-1;
while(inc>0)
{
for(i=inc;i<n;i++)
{
temp=a[i];
j=i-inc;
while(j>=0 && a[j]>temp)
{
a[j+inc]=a[j];
j=j-inc;
}
a[j+inc]=temp;
}
inc=inc/2;
}
for(i=0;i<n;i++)
{
printf("%d ",a[i]);
}
getch();
}
int main()
{
int a[]={1,5,7,2,0,-1,5,43,23,60};
shellsort(a,10);
}

Quick Sort C program for Dev C++

 #include <stdio.h>  
#define cutoff 3
void swap(int *a,int *b)
{
int temp=*a;
*a=*b;
*b=temp;
}
int median(int a[],int left,int right)
{
int center=(left+right)/2;
if(a[left]>a[center])
swap(&a[left],&a[center]);
if(a[left]>a[right])
swap(&a[left],&a[right]);
if(a[right]<a[center])
swap(&a[right],&a[center]);
swap(&a[center],&a[right-1]);
return a[right-1];
}
void insertionsort(int A[],int n)
{
int j,p,temp;
for(p=1;p<n;p++)
{
temp=A[p];
for(j=p;j>0&&A[j-1]>temp;j--)
A[j]=A[j-1];
A[j]=temp;
}
}
void qsort(int a[],int left,int right)
{
int i,j,pivot;
if(left+cutoff<=right)
{
pivot=median(a,left,right);
i=left;
j=right-1;
while(1)
{
while(a[++i]<pivot){}
while(a[--j]>pivot){}
if(i<j)
swap(&a[i],&a[j]);
else
break;
}
swap(&a[i],&a[right-1]);
qsort(a,left,i-1);
qsort(a,i+1,right);
}
else
insertionsort(a+left,right-left+1);
}
void quicksort(int a[],int n)
{
qsort(a,0,n-1);
}
int main()
{
int a[]={1,5,7,2,0,-1,5,43,23,60};
quicksort(a,10);
int i;
for(i=0;i<10;i++)
{
printf("%d ",a[i]);
}
getch();
}

Merge Sort C program for Dev c++

 merges(int a[],int l,int r)  
{
int c=(l+r)/2,i=l;
int j=c+1,k=0,x;
int b[r-l+1];
while(j<=r && i<=c)
{
if(a[j]<a[i])
b[k++]=a[j++];
else
b[k++]=a[i++];
}
while(j<=r)
b[k++]=a[j++];
while(i<=r)
b[k++]=a[i++];
for(x=l;x<=r;x++)
a[x]=b[x-l];
}
merge_rec(int a[],int l,int r)
{
int c;
if(l<r)
{
c=(l+r)/2;
merge_rec(a,l,c);
merge_rec(a,c+1,r);
merges(a,l,r);
}
}
int main()
{
int a[]={1,4,2,11,0,45,9,75,-4,40};
int i;
merge_rec(a,0,9);
for(i=0;i<=9;i++)
{
printf("%d ",a[i]);
}
getch();
}

Heap Sort C program for DEV C++

1:  #define leftchild(n)(2*n+1)  
2: void swap(int *a,int *b)
3: {
4: int temp=*a;
5: *a=*b;
6: *b=temp;
7: }
8: void heapify(int a[],int i,int n)
9: {
10: int temp,maxchild;
11: for(temp=a[i];leftchild(i)<n;i=maxchild)
12: {
13: maxchild=leftchild(i);
14: if(maxchild!=n-1 && a[maxchild]<a[maxchild+1])
15: maxchild++;
16: if(temp<a[maxchild])
17: a[i]=a[maxchild];
18: else
19: break;
20: }
21: a[i]=temp;
22: }
23: void heapsort(int a[],int n)
24: {
25: int i;
26: for(i=n/2;i>=0;i--)
27: heapify(a,i,n);
28: for(i=n-1;i>0;i--)
29: {
30: swap(&a[0],&a[i]);
31: heapify(a,0,i);
32: }
33: }
34: int main()
35: {
36: int a[]={1,245,7,2,0,-1,5,43,23,60};
37: int i,n=10;
38: heapsort(a,n);
39: for(i=0;i<n;i++)
40: {
41: printf("%d ",a[i]);
42: }
43: getch();
44: }