Saturday, 4 March 2017

C program to implement singly queue using array.

#include<stdio.h>
#include<conio.h>
#include<stdlib.h>
# define MAX 10
int que_arr[MAX];
int rear=-1;
int front=-1;
void insert(int );
int del();
int peek();
void display();
int full();
int empty();
main()
{
int item,choice;
while(1)
{
printf("1.insert\n2.delete\n3.peek\n4.display\n5.exit\nEnter your choice:");
scanf("%d",&choice);
switch(choice)
 {
  case 1:
    printf("enter item to be insert:");
    scanf("%d",&item);
    insert(item);
    break;
   case 2:
                   item=del();    
      printf("deleted item is : %d\n",item);
  break;
   case 3:
      item=peek();
  printf("item at the front : %d\n",item);    
          break;
   case 4:
      display();
  break;
   case 5:
      exit(1);
      break;
default:
   printf("sorry!this choice not present\n");
               
 }
}
getch();
}
int full()
{
if(rear==MAX-1)
 return 1;
else
 return 0;
}
int empty()
{
if((front==-1)||(front==rear+1))
 return 1;
else
 return 0;
}
void insert(int item)
{
if(full())
{
   printf("queue is overflow");
   exit(1);
    }
    else
    {
    if(front==-1)
    front=0;
    rear=rear+1;
    que_arr[rear]=item;
    }
}
int del()
{
    int item;
if(empty())
{
printf("queue is underflow");
exit(1);
}
else
{
item=que_arr[front];
front=front+1;
return(item);
}
}
int peek()
{  
     if(empty())
{
printf("queue is underflow");
exit(1);
}
else
{
return(que_arr[front]);
}
}
void display()
{  
    int i;
    printf("items are : ");
if(empty())
{
printf("queue is underflow");
exit(1);
}

for(i=front;i<=rear;i++)
printf("%d\t",que_arr[i]);
printf("\n");
}

C program to implement queue using linklist.

#include<stdio.h>
#include<conio.h>
#include<stdlib.h>
typedef struct stack
{
int info;
struct stack *next;
}s;
s *front=NULL;
s *rear=NULL;
void push(s *,int);
int pop(s *);
void display(s *);
main()
{
int item,choice;
while(1)
{
printf("\n    ***********\n    1.)push\n    2.)pop\n    3.)display\n    4.)exit\n    Enter your choice : ");
   scanf("%d",&choice);
switch(choice)
{
case 1:
  printf("enter item to be push :");
  scanf("%d",&item);
  push(rear,item);
  break;
case 2:
      item=pop(front);
  printf("popped item is : %d",item);
  break;
case 3:
      display(front);
  break;
case 4:
      exit(1);
  break;
default:
      printf("please enter your choice again");        
}
}
getch();
}
void push(s *p,int item)
{
s*tmp;
tmp=(s *)malloc(sizeof(s));
if(p==NULL)
{
tmp->info=item;
rear=tmp;
rear->next=NULL;
front=tmp;
}
else
{
tmp->info=item;
rear->next=tmp;
rear=tmp;
rear->next=NULL;

}
}
void display(s *p)
{
s *ptr;
ptr=front;
if(front==NULL)
{
printf("queue is empty");
exit(1);
}
else
    {
printf("queue is\n");
printf("       | ");
while(ptr->next!=NULL)
{
printf("%d ",ptr->info);
ptr=ptr->next;
}
printf("%d ",ptr->info);
printf(" | ");
    }
}
int pop(s *p)
{int item;
if(front==NULL)
{
printf("queue is empty");
exit(1);
}
s*tmp;
tmp=front;
item=tmp->info;
front=front->next;
free(tmp);
return item;
}

C program to implement stack using linklist.

#include<stdio.h>
#include<conio.h>
#include<stdlib.h>
typedef struct stack
{
int info;
struct stack *next;
}s;
s *top=NULL;
void push(s *,int);
int pop(s *);
void display(s *);
main()
{
int item,choice;
while(1)
{
printf("\n    ***********\n    1.push\n    2.pop\n    3.display\n    4.exit\n    Enter your choice : ");
   scanf("%d",&choice);
switch(choice)
{
case 1:
  printf("enter item to be push :");
  scanf("%d",&item);
  push(top,item);
  break;
case 2:
      item=pop(top);
  printf("popped item is : %d",item);
  break;
case 3:
      display(top);
  break;
case 4:
      exit(1);
  break;
default:
      printf("please enter your choice again");        
}
}
getch();
}
void push(s *p,int item)
{
  s *tmp;
  tmp=(s *)malloc(sizeof(s));
  tmp->info=item;
  tmp->next=top;
  top=tmp;
}
int pop(s *p)
{

int y;
s *tmp;
if(p==NULL)
{
printf("stack is empty");
exit(1);
}
else
{
tmp=top;
top=tmp->next;
y=tmp->info;
free(tmp);
return y;}
}
void display(s *p)
{
s *ptr;
ptr=top;
if(ptr==NULL)
{
printf("stack is empty");
exit(1);
}
else
{

printf("stack is \n");
while(ptr->next!=NULL)
{
printf("|  %d  |\n",ptr->info);
ptr=ptr->next;
}
printf("|  %d  |\n",ptr->info);
}}

C program to implement stack using array.

#include<stdio.h>
#include<conio.h>
#include<stdlib.h>
#define MAX 10
int stack_arr[MAX];
int top=-1;
void push(int item);
int pop();
int peek();
void display();
int full();
int empty();
main()
{
int item,choice;
while(1)
{
   printf("1.Push\n2.Pop\n3.peek\n4.Display\n5.Exit\nEnter your choice:");
   scanf("%d",&choice);
   switch(choice)
     {
     case 1:
       printf("enter elemnt to be pushed:");
               scanf("%d",&item);
               push(item);
               break;
         case 2:
             item=pop();
       printf("popped element is : %d\n",item);
       break;
 case 3:
       item=peek();
printf("top element is : %d\n",item);
break;
 case 4:
       display();
break;
 case 5:
       exit(1);
 default:
       printf("This choice is not present SORRY!!");
     }
}
getch();
}
int full()
{
if(top==MAX-1)
return 1;
else
return  0;
}
int empty()
{
if(top==-1)
return 1;
else
return 0;
}
void push(int item)
{
if(full())
{
printf("its overflow");
exit(1);
}
else
{
top++;
stack_arr[top]=item;
}
}
int pop()
{
int item;
if(empty())
{
printf("its overflow");
exit (1);
}
else
{
item=stack_arr[top];
top--;
return(item);
}
}
int peek()
{
if(empty())
{
printf("its underflow");
exit(1);
}
else
{
return(stack_arr[top]);
}
}
void display()
{
int i;
if(empty())
{
  printf("stack is empty");
  exit(1);
    }
else
{
printf("items are : ");
for(i=top;i>=0;i--)
{
printf("%d  ",stack_arr[i]);
}
printf("\n");
}
}

Friday, 24 February 2017

C Program to implement Binary Search Tree ( BST ) Insertion , Deletion and Inorder traversal.

#include<stdio.h>
#include<conio.h>
#include<stdlib.h>
typedef struct tree
{
int info;
struct tree *left,*right;
}s;
s *root=NULL;
s * insert(s *,int );
void inorder(s *);
s* del(s*,int);
main()
{
int ch,item;
printf("1.insert\n2.display Inorder Traversal \n3.delete\n4.exit");
while(1)
{
printf("\nenter your choice :");
scanf("%d",&ch);
switch(ch)
{
case 1:
  printf("enter item to be insert : ");
  scanf("%d",&item);
  root=insert(root,item);
  break;
case 2:
      inorder(root);
  break;
case 3:
  printf("enter item to be deleted : ");
  scanf("%d",&item);
      root=del(root,item);
  break;
case 4:
      exit(1);
default:
      printf("enter choice again");      
}
}
getch();
}
s* insert(s *root,int key)
{
s*ptr,*tmp,*par;
ptr=root;
tmp=(s *)malloc(sizeof(s));
tmp->info=key;
while(ptr!=NULL)
{
par=ptr;
if(key>ptr->info)
ptr=ptr->right;
else
ptr=ptr->left;
}
if(root==NULL)
{
root=tmp;
root->left=root->right=NULL;
}
else
{
ptr=tmp;
ptr->left=ptr->right=NULL;
if(par->info>key)
par->left=ptr;
else
par->right=ptr;
}
return root;
}
void inorder(s *root)
{
s*p;
p=root;
if(p==NULL)
    return ;
    inorder(p->left);
printf("%d  ",p->info);
inorder(p->right);
}
s* del(s *root,int item)
{
    s *ptr,*par,*parsucc,*succ,*child;
ptr=root;
par=NULL;
while(ptr!=NULL)
{
if(item==ptr->info)
break;
par=ptr;
if(item<ptr->info)
ptr=ptr->left;
else
ptr=ptr->right;

}
if(ptr==NULL)
{
printf("key is not present");
return root;
}
if(ptr->left!=NULL&&ptr->right!=NULL)
{
parsucc=ptr;
succ=ptr->right;
while(succ->left!=NULL)
{
parsucc=succ;
succ=succ->left;
}
ptr->info=succ->info;
ptr=succ;
par=parsucc;
}
if(ptr->left!=NULL)
   child=ptr->left;
else
   child=ptr->right;
if(par==NULL)
root=child;
else if(ptr==par->left)  
      par->left=child;
      else
      par->right=child;

free(ptr);
return root;
}

OUTPUT :

Wednesday, 22 February 2017

C Program to implement CRC (Cyclic Redundancy Code) in Client-Server.


 Client :

#include<stdio.h>
#include<string.h>
#include<sys/types.h>
#include<sys/socket.h>
#include<netinet/in.h>
#include<netdb.h>
#define SERV_TCP_PORT 5035
int main(int argc,char * * argv)
{
       int sockfd;
       struct sockaddr_in serv_addr;
       struct hostent *server;

       int i,j,keylen,msglen,k;
       char input[100],key[30],temp[30],quot[100],key1[30],
       afterror[100], sermessage[200];
     
       sockfd=socket(AF_INET,SOCK_STREAM,0);
       serv_addr.sin_family=AF_INET;
       serv_addr.sin_addr.s_addr=inet_addr("127.0.0.1");
       serv_addr.sin_port=htons(SERV_TCP_PORT);
       connect(sockfd,(struct sockaddr*)&serv_addr,sizeof(serv_addr));
     
       printf("Enter Message Data : ");
        gets(input);
        strcpy(afterror,input);
        printf("Enter Divisor : ");
        gets(key);
        keylen=strlen(key);
        msglen=strlen(input);
        char key2[keylen];
        strcpy(key2,key);
        char rem[keylen-1];
   
        strcpy(key1,key);
        for (i=0;i<keylen-1;i++) {
            input[msglen+i]='0';
        }
        for (i=0;i<keylen;i++)
         temp[i]=input[i];
        for (i=0;i<msglen;i++) {
            quot[i]=temp[0];
            if(quot[i]=='0')
            for (j=0;j<keylen;j++)
            key[j]='0'; else
            for (j=0;j<keylen;j++)
            key[j]=key1[j];
            for (j=keylen-1;j>0;j--)
            {
                if(temp[j]==key[j])
                 rem[j-1]='0'; else
                 rem[j-1]='1';
            }
            rem[keylen-1]=input[i+keylen];
            strcpy(temp,rem);
        }
       strcpy(rem,temp);
       printf("\nQuotient is : ");
       for (i=0;i<msglen;i++)
       printf("%c",quot[i]);
       printf("\nRemainder or Crc is : ");
       for (i=0;i<keylen-1;i++)
       printf("%c",rem[i]);
       rem[i]='\0';
      
      
       printf("\nDo You want introduce an Error In original Message(Press 0) : ");
       scanf("%d",&k);
       if(k==0)
       {
        printf("Enter position where do you want introduce an error : ");
        scanf("%d",&k);
        if(afterror[k-1]=='0')
        afterror[k-1]='1';
        else
        afterror[k-1]='0';
       }
       printf("\nAfter Introducing Error Original Data Will Be : ");
       printf("%s",afterror);
        
      write(sockfd,afterror,100);
      write(sockfd,rem,30);
      write(sockfd,key2,30);
    
     
      printf("\n");
      printf("\nServer Respond : \n");
      read(sockfd,sermessage,200);
      printf("%s\n\n",sermessage);
       close(sockfd);
       return 0;
}



Server :


#include<stdio.h>
#include<string.h>
#include<sys/types.h>
#include<sys/socket.h>
#include<netinet/in.h>
#include<netdb.h>
#define SERV_TCP_PORT 5035
int main(int argc, char **argv)
{
int sockfd,newsockfd,clength;
struct sockaddr_in serv_addr,cli_addr;

int i,j,keylen,msglen,remlen,flag=0;
char input[100], key[30],temp[30],quot[100],rem[30],key1[30],crc[30],retmessage[100];

sockfd=socket(AF_INET,SOCK_STREAM,0);
serv_addr.sin_family=AF_INET;
serv_addr.sin_addr.s_addr=INADDR_ANY;
serv_addr.sin_port=htons(SERV_TCP_PORT);

printf("\n Binding Done...");
bind(sockfd,(struct sockaddr*)&serv_addr,sizeof(serv_addr));
listen(sockfd,5);
clength=sizeof(cli_addr);
newsockfd=accept(sockfd,(struct sockaddr*)&cli_addr,&clength);
read(newsockfd,input,100);
read(newsockfd,rem,30);
read(newsockfd,key,30);



// Message Data After Error Introducing
// CRC Calculated from Original data message

printf("\nMessage Data Received From Client : %s",input);
printf("\nCrc : %s",rem);
printf("\nDivisor : %s",key);


// Crc Implementing

keylen=strlen(key);
        msglen=strlen(input);
        strcpy(key1,key);
        strcat(input,rem);
        for (i=0;i<keylen;i++)
        temp[i]=input[i];
        for (i=0;i<msglen;i++) {
            quot[i]=temp[0];
            if(quot[i]=='0')
            for (j=0;j<keylen;j++)
            key[j]='0'; else
            for (j=0;j<keylen;j++)
            key[j]=key1[j];
            for (j=keylen-1;j>0;j--)
           {
                if(temp[j]==key[j])
                 rem[j-1]='0'; else
                 rem[j-1]='1';
            }
            rem[keylen-1]=input[i+keylen];
            strcpy(temp,rem);
        }

        strcpy(rem,temp);
       printf("\nQuotient is ");
       for (i=0;i<msglen;i++)
       printf("%c",quot[i]);
       printf("\nRemainder or Crc is ");
       for (i=0;i<keylen-1;i++)
       printf("%c",rem[i]);
       printf("\n\n");
       remlen=strlen(rem);
       for(i=0;i<remlen;i++)
       {
          if(rem[i]!='0')
          flag++;
       }
       if(flag>0)
       // If Remainder is Not Zero
       strcpy(retmessage,"Message Received by Server , Message In Error Please Send Again");
       else
       // If Remainder is Zero
       strcpy(retmessage,"Message Received by Server Without Error");

      write(newsockfd,retmessage,200);
close(sockfd);
return 0;
}

  Client Output & Server Output :