Important programs in c language part-VIII

/*queue various operation*/

#include<stdio.h>
#include<conio.h>
#define MAXSIZE 5
int front=-1, rear=-1,choice;
int q[10];
void main()
{
clrscr();
do
{
printf("\n1-->insert\n");
printf("2-->delete\n");
printf("3-->display\n");
printf("4-->exit\n");
printf("enter your choice\n");
scanf("%d",&choice);
switch(choice)
{
case 1:qinsert();
      break;
case 2:qdelete();
       break;
case 3:qdisplay();
       break;
case 4:return;
}
}
while(choice!=4);
}
 qinsert()
{
int num;
if(rear==(MAXSIZE-1))
{
printf("queue is full\n");
return;
}
else
{
printf("enter no\n");
scanf("%d",&num);
rear=rear+1;
q[rear]=num;
if(front==-1)
{
 front++;
 }
 }
 return;
 }
qdelete()
{
int num;
if(front==-1)
{
printf("queue empty\n");
return;
}
else
{
if(front==rear)
front=rear=-1;
else
{
num=q[front];
printf("deleted item=%d",q[front]);
front++;
}
}
return(num);
}
qdisplay()
{
int i;
if(front==-1)
{
printf("queue empty\n");
return;
}
else
{
printf("\nThe status of the queu\n");
for(i=front;i<=rear;i++)
{
printf("%d\n",q[i]);
}
}
printf("\n");
}

/*search*/

 
#include<stdio.h>
#include<conio.h>
void main()
{
int a[100],i,loc,mid,beg,end,n,flag=0,item;
clrscr();
printf("How many elements");
scanf("%d",&n);
printf("Enter the element of the array\n");
for(i=0;i<=n-1;i++)
{
scanf("%d",&a[i]);
}
printf("Enter the element to be searching\n");
scanf("%d",&item);
loc=0;
beg=0;
end=n-1;
while((beg<=end)&&(item!=a[mid]))
{
     mid=((beg+end)/2);
       if(item==a[mid])
	 {
	   printf("search is successfull\n");
	   loc=mid;
	   printf("position of the item%d\n",loc+1);
	   flag=flag+1;
	 }
      if(item<a[mid])
	end=mid-1;
 else
	beg=mid+1;
}
if(flag==0)
{
printf("search is not successfull\n");
}
getch();
}

/*searching of tree*/

#include<stdio.h>
struct rec
{
	long num;
	struct rec *left;
	struct rec *right;
};
struct rec *tree=NULL;
struct rec *tree;
struct rec *delnum(long digit,struct rec *r);
struct rec *insert(struct rec *tree,long num);
struct rec *deletenode(long digit,struct rec *tree);
void search(struct rec *tree,long num);
void preorder(struct rec *tree);
void inorder(struct rec *tree);
void postorder(struct rec *tree);
void main()
{
int choice;
long digit;
int element;
	do
	  {
		choice=select();
		switch(choice)
		 {
		   case 1: puts("Enter integer: To quit enter 0");
			   scanf("%ld",&digit);
			   while(digit!=0)
				{
				   tree=insert(tree,digit);
				   scanf("%ld",&digit);
				}continue;
		   case 2: puts("Enter the number to be search");
			   scanf("%ld",&digit);
			   search(tree,digit);
			   continue;
		   case 3: puts("\npreorder traversing TREE");
			   preorder(tree);continue;
		   case 4: puts("\ninorder traversing TREEE");
			   inorder(tree);continue;
		   case 5: puts("\npostorder traversing TREE");
			   postorder(tree);continue;
		   case 6: puts("Enter element which do you wanbt delete from  the BST");
			    scanf("%ld",&digit);
			   deletenode(digit,tree);continue;
		   case 7: puts("END");exit(0);
		}
	}while(choice!=7);
}
int select()
{
int selection;
	do
	  {
		puts("Enter 1: Insert a node in the BST");
		puts("Enter 2: Search a node in BST");
		puts("Enter 3: Display(preorder)the BST");
		puts("Enter 4: Display(inorder)the BST");
		puts("Enter 5: Display(postorder) the BST");
		puts("Enter 6: Delete the element");
		puts("Enter 7: END");
		puts("Enter your choice");
		scanf("%d",&selection);
		     if((selection<1)||(selection>7))
			{
			  puts("wrong choice:Try again");
			  getch(); }
	   }while((selection<1)||(selection>7));
	   return (selection);
}
struct rec *insert(struct rec *tree,long digit)
{
	if(tree==NULL)
	  {
		tree=(struct rec *)malloc(sizeof(struct rec));
		tree->left=tree->right=NULL;
		tree->num=digit;
	  }
     else
	  if(digit<tree->num)
		tree->left=insert(tree->left,digit);
     else
	  if(digit>tree->num)
		tree->right=insert(tree->right,digit);
     else if(digit==tree->num)
	    {
	       puts("Duplicate node:program exited");exit(0);
	    }
	    return(tree);
}
struct rec *delnum(long digit,struct rec *r)
{
struct rec *q;
if(r->right!=NULL)delnum(digit,r->right);
else
q->num=r->num;
q=r;
r=r->left;
}
struct rec *deletenode(long digit,struct rec *tree)
{
struct rec *r,*q;
if(tree==NULL)
{
puts("Tree is empty.");
exit(0);
}
if(digit<tree->num)
deletenode(digit,tree->left);
else
if(digit>tree->num)deletenode(digit,tree->right);
q=tree;
if((q->right==NULL)&&(q->left==NULL))
q=NULL;
else
if(q->right==NULL)tree=q->left;else
if(q->left==NULL)tree=tree=q->right;else
delnum(digit,q->left);
free(q);
}
void search(struct rec *tree,long digit)
{
	if(tree==NULL)
	   puts("The number does not exits\n");
   else
	if(digit==tree->num) 
	printf("Number=%ld\n" ,digit);
   else
	if(digit<tree->num)
	   search(tree->left,digit);
   else
	  search(tree->right,digit);
}
void preorder(struct rec *tree)
{
	if(tree!=NULL)
	  {
		printf("%12ld\n",tree->num);
		preorder(tree->left);
		preorder(tree->right);
	  }
}
void inorder(struct rec *tree)
{
	if(tree!=NULL)
	    {
		inorder(tree->left);
		printf("%12ld\n",tree->num);
		inorder(tree->right);
	    }
}
void postorder(struct rec *tree)
{
	if(tree!=NULL)
	  {
		postorder(tree->left);
		postorder(tree->right);
		printf("%12ld\n",tree->num);
	  }
 
}

Leave a Reply

You must be logged in to post a comment.

Close