You are on page 1of 65

Program 1

(Insertion, Deletion in Array at Start, End and Middle)


#define size 100
void ins(int *, int *);
void del(int *, int *);
void main()
{
int arr[size]={0},n,i,ch;
clrscr();
printf("Enter no. of elements you want in Array:");
scanf("%d",&n);
clrscr();
printf("Enter Elements\n");
for(i=0;i<n;i++)
{
scanf("%d",&arr[i]);
}
printf("\n\n\n\t\tPress 1 for Insert\n\t\tPress 2 for Delete\n\t\t\t");
scanf("%d",&ch);
if(ch==1)
ins(arr,&n);
else if(ch==2)
del(arr,&n);
else
printf("\n\n\nWrong Choice....");
clrscr();
for(i=0;i<n;i++)
printf("\n%d",arr[i]);
getch();
}

void ins(int *arr,int *n)


{
int ch,i,p,el;
printf("\n\nPress 1 for Begining, 2 for End, 3 for Middle: ");
scanf("%d",&ch);
printf("\n\nEnter Element : ");
scanf("%d",&el);
if(ch==1)
{
for(i=*n;i>0;i--)
{
arr[i]=arr[i-1];
}
arr[0]=el;
}
else if(ch==2)
{
arr[*n]=el;
}
else if(ch==3)
{
printf("\n\nEnter Position: ");
scanf("%d",&p);
for(i=*n;i>=p;i--)
{
arr[i]=arr[i-1];
}
arr[i]=el;
}
(*n)++;
printf("\n\n\tElement ( %d ) is inserted....");
}

void del(int *arr,int *n)


{
int ch,i,p,el;
printf("\n\nPress 1 for Begining, 2 for End, 3 for Middle: ");
scanf("%d",&ch);
if(ch==1)
{
el=arr[0];
for(i=0;i<(*n);i++)
{
arr[i]=arr[i+1];
}
}
if(ch==2)
{
el=arr[(*n)-1];
}
if(ch==3)
{
printf("\n\nEnter Position: ");
scanf("%d",&p);
el=arr[p-1];
for(i=p-1;i<(*n);i++)
{
arr[i]=arr[i+1];
}
}
(*n)--;
printf("\n\n\tElement ( %d ) is Deleted....");
}

Program 2
(Program for Lower Triangular, Upper Triangular
Matrics)
#include<conio.h>
void main()
{
int mat[4][4],i,j;
clrscr();
printf("Enetr Elements of Matrics: ");
for(i=0;i<4;i++)
for(j=0;j<4;j++)
scanf("%d",&mat[i][j]);
printf("\n\nThe Matrics is:\n\t");
for(i=0;i<4;i++)
{
for(j=0;j<4;j++)
printf(" %2d",mat[i][j]);
printf("\n\t");
}
printf("\n\nThe Upper Trianguler Matrics is:\n\t");
for(i=0;i<4;i++)
{
for(j=0;j<4;j++)
{
if(i>j)
mat[i][j]=0;
printf(" %2d",mat[i][j]);
}
printf("\n\t");
}
printf("\n\nThe Strictly Upper Trianguler Matrics is:\n\t");
for(i=0;i<4;i++)
{
for(j=0;j<4;j++)
{
if(i>=j)
mat[i][j]=0;
printf(" %2d",mat[i][j]);
}
printf("\n\t");
}

printf("\n\nThe Lower Trianguler Matrics is:\n\t");


for(i=0;i<4;i++)
{
for(j=0;j<4;j++)
{
if(i<j)
mat[i][j]=0;
printf(" %2d",mat[i][j]);
}
printf("\n\t");
}
printf("\n\nThe Strictly Lower Trianguler Matrics is:\n\t");
for(i=0;i<4;i++)
{
for(j=0;j<4;j++)
{
if(i>j)
mat[i][j]=0;
printf(" %2d",mat[i][j]);
}
printf("\n\t");
}
getch();
}

Program 2
(Program for Matrics Multiplication)
#define c1 3
#define r1 3
#define r2 3
#define c2 3
main()
{
int mat1[r1][c1],mat2[r2][c2],mat[r1][c2],i,j,k;
clrscr();
printf("Enetr 1st Matrics:\n");
for(i=0;i<r1;i++)
for(j=0;j<c1;j++)
scanf("%d",&mat1[i][j]);
printf("Enter 2nd Matrics:\n");
for(i=0;i<r2;i++)
for(j=0;j<c2;j++)
scanf("%d",&mat2[i][j]);
if(c1!=r2)
printf("\n\nMultiplication not possible....");
else
{
printf("\n\nMultiplication of matrics is:\n\n\t");
for(i=0;i<r1;i++)
{
for(j=0;j<c2;j++)
{
mat[i][j]=0;
for(k=0;k<c1;k++)
{
mat[i][j]+=mat1[i][k]*mat2[k][j];
}
printf(" %2d",mat[i][j]);
}
printf("\n\t");
}
}
getch();
}

Program 4
(Program for Link List Insertion and Deletion)
#include<conio.h>
#include<stdlib.h>
void insert();
void dis();
void del();
typedef struct node
{
int data;
struct node *next;
}node;
node *start,*end,*temp;
main()
{
int i, ch;
while(ch!=4)
{
clrscr();
printf("\n\n");
printf("\t\t\t--------------------------\n");
printf("\t\t\t| Press 1 for insert
|\n");
printf("\t\t\t| Press 2 for Delete
|\n");
printf("\t\t\t| Press 3 for Display |\n");
printf("\t\t\t| Press 4 for Exit
|\n");
printf("\t\t\t--------------------------\n\t\t\t\t\t\t");
scanf("%d",&ch);
switch(ch)
{
case 1: insert();
break;
case 2: del();
break;
case 3: dis();
break;
case 4:
break;
default: printf("Enter Right Choice....");
}
}
getch();
}

void insert()
{
int item,pos,i;
node *t;
temp=(node *)malloc(sizeof(node));
temp->next='\0';
printf("Enter Data in NODE : ");
scanf("%d",&item);
temp->data=item;
printf("Enter the position to insert the node:");
scanf("%d",&pos);
if(start==NULL)
{
start=temp;
end=temp;
}
else
{
t=start;
if(pos==1)
{
temp->next=start;
start=temp;
}
else
{
for(i=1;i<pos-1;i++)
t=t->next;
temp->next=t->next;
t->next=temp;
if(temp->next==NULL)
end=temp;
}
}
printf("\n\n\t\t\tItem Inserted....");
getch();
}

void dis()
{
printf("\n\n");
temp=start;
while(temp!=NULL)
{
printf("%d ",temp->data);
temp=temp->next;
}
getch();
}
void del()
{
int item,pos,i;
node *t;
printf("Enter the position to insert the node:");
scanf("%d",&pos);
if(start==NULL)
{
printf("\n\n\t\tNo node to delete....");
}
else
{
t=start;
if(start==end)
{
start=end=NULL;
free(t);
}
else if(pos==1)
{
start=start->next;
free(t);
}
else
{
for(i=1;i<pos-1;i++)
t=t->next;
temp=t->next;
t->next=t->next->next;
free(temp);
}
}
printf("\n\n\t\t\tNode deleted....");
getch();
}

Program 5
Program for Insertion and Deletion at Start, End,
and Middle in a DOUBLY LINK LIST
#incude<conio.h>
void ins();
void del();
void dis();
typedef struct node
{
int data;
struct node *next,*prev;
}node;
node *start,*end,*temp;
void main()
{
int ch;
while(ch!=4)
{
clrscr();
printf("\n\t\t------------------------------");
printf("\n\t\t| Press 1 for Insert
|");
printf("\n\t\t| Press 2 for Delete
|");
printf("\n\t\t| Press 3 for Display
|");
printf("\n\t\t| Press 4 for Exit
|");
printf("\n\t\t------------------------------\n\n\t\t");
scanf("%d",&ch);
switch(ch)
{
case 1: ins();
break;
case 2: del();
break;
case 3: dis();
break;
case 4: clrscr();
textcolor(1+BLINK);
printf("\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\t\t\t");
cprintf("Thank You....");
break;
default: printf("\n\n\tWrong Choice....");
}
}
getch();
}

10

void ins()
{
int ch,ele;
node *temp1;
printf("\n\n\t\t1 for Insert at Start, 2 for End, 3 for Middile.");
scanf("%d",&ch);
printf("\n\n\nEnter Element: ");
scanf("%d",&ele);
if(start=='\0')
{
start= (node *)malloc(sizeof(node));
start->next='\0';
start->prev='\0';
start->data= ele;
end=start;;
}
else if(ch==1)
{
temp = (node *)malloc(sizeof(node));
temp->prev='\0';
temp->next= start;
temp->data= ele;
start=temp;
}
else if(ch==2)
{
temp = (node *)malloc(sizeof(node));
temp->next= '\0';
temp->prev='\0';
temp->data= ele;
temp->prev=end;
end->next=temp;
end=temp;
}
else if(ch==3)
{
int p,i;
printf("Enter Position: ");
scanf("%d",&p);
temp=start;
for(i=1;i<p-1;i++)
temp=temp->next;

11

if(p==1)
{
temp1 = (node *)malloc(sizeof(node));
temp1->prev='\0';
temp1->next= start;
temp1->data= ele;
start=temp1;
}
else
{
temp1 = (node *)malloc(sizeof(node));
temp1->prev=temp1->next='\0';
temp1->data=ele;
temp1->prev=temp;
temp1->next=temp->next;
temp->next=temp1;
}
}
else
{
printf("\n\t\tWrong Choice....");
}
}
void dis()
{
temp=start;
printf("\n\n\t\t\tElements of Link List are:\n");
while(temp!='\0')
{
printf("\t- %3d\n",temp->data);
temp=temp->next;
}
getch();
}

12

void del()
{
int item;
textcolor(RED);
if(start=='\0')
cprintf("\n\n\t\tList is EMPTY....");
else
{
printf("\n\n\t\t1 for Delete from Start, 2 for End, 3 for
Middile.");
scanf("%d",&ch);
if(start==end)
{
item=start->data;
temp=start;
end=start='\0';
if(ch==1)
{
item=start->data;
temp=start;
start=start->next;
start->prev='\0';
}
else if(ch==2)
{
item=end->data;
end=end->prev;
end->next='\0';
}
else if(ch==3)
{
int p,i;
printf("Enter Position: ");
scanf("%d",&p);
temp=start;
for(i=1;i<p;i++)
temp=temp->next;
temp->prev->next=temp->next;
temp->next->prev=temp->prev;
item=temp->data;
}
else
printf("\n\n\t\tWrong Choice....");
}
}

13

Program 6
Program for Insertion and Deletion at in STACK
implemented ARRAY
#define size 5
#include<conio.h>
void ins();
void del();
void dis();
int stack[size],tos=-1;
void main()
{
int ch;
while(ch!=4)
{
clrscr();
printf("\n\t\t------------------------------");
printf("\n\t\t| Press 1 for Insert
|");
printf("\n\t\t| Press 2 for Delete
|");
printf("\n\t\t| Press 3 for Display
|");
printf("\n\t\t| Press 4 for Exit
|");
printf("\n\t\t------------------------------\n\n\t\t");
scanf("%d",&ch);
switch(ch)
{
case 1: ins();
break;
case 2: del();
break;
case 3: dis();
break;
case 4: clrscr();
textcolor(1+BLINK);
printf("\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\t\t\t");
cprintf("Thank You....");
break;
default: printf("\n\n\tWrong Choice....");
}
}
getch();
}

14

void ins()
{
int ch,ele;
if(tos==size-1)
printf("\n\nStack is full....");
else
{
printf("\n\n\nEnter Element: ");
scanf("%d",&ele);
stack[++tos]=ele;
printf("\n\nElement Inserted....");
}
}

void dis()
{
int i;
if(tos==-1)
printf("\n\n\t\t\tSTACK is Empty....");
else
{
printf("\n\n\t\t\tElements of STACK are:\n");
for(i=tos;i>=0;i--)
{
printf("\t\t\t=> %3d\n",stack[i]);
}
}
getch();
}
void del()
{
int item;
if(tos==-1)
printf("\n\n\t\t\tSTACK is Empty....");
else
{
item=stack[tos];
tos--;
printf("\n\n\t\t\tElement (%d) is Deleted....");
}
getch();
}

15

Program 7
Program for Insertion and Deletion at in STACK
implemented LINK SINGLY LIST
#include<conio.h>
#include<stdlib.h>
void insert();
void dis();
void del();
typedef struct node
{
int data;
struct node *next;
}node;
node *start,*end,*temp;
main()
{
int i, ch;
while(ch!=4)
{
clrscr();
printf("\n\n");
printf("\t\t\t--------------------------\n");
printf("\t\t\t| Press 1 for insert
|\n");
printf("\t\t\t| Press 2 for Delete
|\n");
printf("\t\t\t| Press 3 for Display |\n");
printf("\t\t\t| Press 4 for Exit
|\n");
printf("\t\t\t--------------------------\n\t\t\t\t\t\t");
scanf("%d",&ch);
switch(ch)
{
case 1: insert();
break;
case 2: del();
break;
case 3: dis();
break;
case 4:
break;
default: printf("Enter Right Choice....");
}
}
getch();
}

16

void insert()
{
int item,pos,i;
node *t;
temp=(node *)malloc(sizeof(node));
temp->next='\0';
printf("Enter Data in NODE : ");
scanf("%d",&item);
temp->data=item;
if(start=='\0')
end=temp;
temp->next=start;
start=temp;
printf("\n\n\t\t\tItem Inserted....");
getch();
}
void dis()
{
printf("\n\n");
temp=start;
while(temp!='\0')
{
printf("%d ",temp->data);
temp=temp->next;
}
getch();
}
void del()
{
int item,pos,i;
node *t;
printf("Enter the position to insert the node:");
scanf("%d",&pos);
if(start=='\0')
printf("\n\n\t\tNo node to delete....");
else
{
t=start;
if(start==end)
{
start=end='\0';
free(t);
}
else
{
start=start->next;
free(t);
}
}
printf("\n\n\t\t\tNode deleted....");
getch();}

17

Program 8
Program for Searching and Merging in a SINGALY
LINK LIST
#include<conio.h>
#include<stdlib.h>
void insert(int);
void dis();
void merg();
void dismer();
typedef struct node
{
int data;
struct node *next;
}node;
node *start1,*start2,*end1,*end2,*temp;
main()
{
int i, ch;
clrscr();
printf("\n\n");
printf("\t\t\t ----------------------------------------------\n");
printf("\t\t\t| Press 1 for insert in 1st Link List
|\n");
printf("\t\t\t| Press 2 for insert in 2nd Link List |\n");
printf("\t\t\t| Press 3 for Display
|\n");
printf("\t\t\t| Press 4 for Merging
|\n");
printf("\t\t\t| Press 5 for Display Merged List
|\n");
printf("\t\t\t| Press 6 for Searching in List
|\n");
printf("\t\t\t| Press 7 for Exit
|\n");
printf("\t\t\t ----------------------------------------------\n\t\t\t\t\t\t");
scanf("%d",&ch);
switch(ch)
{
case 1: insert(1);
break;
case 2: insert(2);
break;
case 3: dis();
break;
case 4: Merg();
break;
case 5: dismer();
break;
case 6: ser();
break;
case 7: break;
default: printf("Enter Right Choice....");
18

}
getch();
}
void ins(int x)
{
int ch,ele;
node *temp1;
printf("\n\n\t\t1 for Insert at Start, 2 for End, 3 for Middile.");
scanf("%d",&ch);
printf("\n\n\nEnter Element: ");
scanf("%d",&ele);
if(x==1)
{
if(start1=='\0')
{
start1= (node *)malloc(sizeof(node));
start1->next='\0';
start1->prev='\0';
start1->data= ele;
end1=start1;;
}
else if(ch==1)
{
temp = (node *)malloc(sizeof(node));
temp->prev='\0';
temp->next= start1;
temp->data= ele;
start1=temp;
}
else if(ch==2)
{
temp = (node *)malloc(sizeof(node));
temp->next= '\0';
temp->prev='\0';
temp->data= ele;
temp->prev=end1;
end1->next=temp;
end1=temp;
}
else if(ch==3)
{
int p,i;
printf("Enter Position: ");
scanf("%d",&p);
temp=start1;
for(i=1;i<p-1;i++)
temp=temp->next;

19

if(p==1)
{
temp1 = (node *)malloc(sizeof(node));
temp1->prev='\0';
temp1->next= start1;
temp1->data= ele;
start1=temp1;
}
else
{
temp1 = (node *)malloc(sizeof(node));
temp1->prev=temp1->next='\0';
temp1->data=ele;
temp1->prev=temp;
temp1->next=temp->next;
temp->next=temp1;
}
}
else
{
printf("\n\t\tWrong Choice....");
}
}
if(x==2)
{
if(start2=='\0')
{
start2= (node *)malloc(sizeof(node));
start2->next='\0';
start2->prev='\0';
start2->data= ele;
end2=start2;;
}
else if(ch==1)
{
temp = (node *)malloc(sizeof(node));
temp->prev='\0';
temp->next= start2;
temp->data= ele;
start2=temp;
}
else if(ch==2)
{
temp = (node *)malloc(sizeof(node));
temp->next= '\0';
temp->prev='\0';
temp->data= ele;
temp->prev=end2;
end2->next=temp;
end2=temp;
20

}
else if(ch==3)
{
int p,i;
printf("Enter Position: ");
scanf("%d",&p);
temp=start2;
for(i=1;i<p-1;i++)
temp=temp->next;
if(p==1)
{
temp1 = (node *)malloc(sizeof(node));
temp1->prev='\0';
temp1->next= start2;
temp1->data= ele;
start2=temp1;
}
else
{
temp1 = (node *)malloc(sizeof(node));
temp1->prev=temp1->next='\0';
temp1->data=ele;
temp1->prev=temp;
temp1->next=temp->next;
temp->next=temp1;
}
}
else
{
printf("\n\t\tWrong Choice....");
}
}
}
void dis()
{
temp=start2;
printf("\n\n\t\t\tElements of Link List are:\n");
while(temp!='\0')
{
printf("\t- %3d\n",temp->data);
temp=temp->next;
}
temp=start2;
printf("\n\n\t\t\tElements of Link List are:\n");
while(temp!='\0')
21

{
printf("\t- %3d\n",temp->data);
temp=temp->next;
}
getch();
}
void merg()
{
end1->next=start2;
end1=end2;
}
Void dismer()
{
temp=start2;
printf("\n\n\t\t\tElements of Link List are:\n");
while(temp!='\0')
{
printf("\t- %3d\n",temp->data);
temp=temp->next;
}
getch();
}
void ser()
{
int ele,f=0;
printf(\n\n\tEnter Element to SEARCHING : );
scanf(%d,&ele);
temp=start1;
while(temp!=NULL)
{
If(temp->data==ele)
{
printf(Element is found.);
f=1;
break;
}
}
If(f==0)
Printf(Element not found.);
}

22

Program 9
Program for Insertion and Deletion at Start, End,
and Middle in a Circular Singaly LINK LIST
#include<conio.h>
#include<stdlib.h>
void insert();
void dis();
void del();
typedef struct node
{
int data;
struct node *next;
}node;
node *start,*end,*temp;
main()
{
int i, ch;
while(ch!=4)
{
clrscr();
printf("\n\n");
printf("\t\t\t--------------------------\n");
printf("\t\t\t| Press 1 for insert
|\n");
printf("\t\t\t| Press 2 for Delete
|\n");
printf("\t\t\t| Press 3 for Display |\n");
printf("\t\t\t| Press 4 for Exit
|\n");
printf("\t\t\t--------------------------\n\t\t\t\t\t\t");
scanf("%d",&ch);
switch(ch)
{
case 1: insert();
break;
case 2: del();
break;
case 3: dis();
break;
case 4:
break;
default: printf("Enter Right Choice....");
}
}
getch();
}

23

void insert()
{
int item,pos,i;
node *t;
temp=(node *)malloc(sizeof(node));
temp->next='\0';
printf("Enter Data in NODE : ");
scanf("%d",&item);
temp->data=item;
printf("Enter the position to insert the node:");
scanf("%d",&pos);
if(start==NULL)
{
start=temp;
end=temp;
end->next=start
}
else
{
t=start;
if(pos==1)
{
temp->next=start;
start=temp;
end->next=start;
}
else
{
for(i=1;i<pos-1;i++)
t=t->next;
temp->next=t->next;
t->next=temp;
if(temp->next==NULL)
{
end=temp;
End->next=start;
}
}
}
printf("\n\n\t\t\tItem Inserted....");
getch();
}

24

void dis()
{
printf("\n\n");
temp=start;
while(temp->next!=start)
{
printf("%d ",temp->data);
temp=temp->next;
}
printf("%d ",temp->data);
getch();
}
void del()
{
int item,pos,i;
node *t;
printf("Enter the position to insert the node:");
scanf("%d",&pos);
if(start==NULL)
{
printf("\n\n\t\tNo node to delete....");
}
else
{
t=start;
if(start==end)
{
start=end=NULL;
free(t);
}
else if(pos==1)
{
start=start->next;
end->next=start;
free(t);
}
else
{
for(i=1;i<pos-1;i++)
t=t->next;
temp=t->next;
t->next=t->next->next;
free(temp);
}
}
printf("\n\n\t\t\tNode deleted....");
getch();
}

25

Program 10
Program for Insertion and Deletion at Start, End,
and Middle in a Circular DOUBLY LINK LIST
#incude<conio.h>
void ins();
void del();
void dis();
typedef struct node
{
int data;
struct node *next,*prev;
}node;
node *start,*end,*temp;
void main()
{
int ch;
while(ch!=4)
{
clrscr();
printf("\n\t\t------------------------------");
printf("\n\t\t| Press 1 for Insert
|");
printf("\n\t\t| Press 2 for Delete
|");
printf("\n\t\t| Press 3 for Display
|");
printf("\n\t\t| Press 4 for Exit
|");
printf("\n\t\t------------------------------\n\n\t\t");
scanf("%d",&ch);
switch(ch)
{
case 1: ins();
break;
case 2: del();
break;
case 3: dis();
break;
case 4: clrscr();
textcolor(1+BLINK);
printf("\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\t\t\t");
cprintf("Thank You....");
break;
default: printf("\n\n\tWrong Choice....");
}
}
getch();
}

26

void ins()
{
int ch,ele;
node *temp1;
printf("\n\n\t\t1 for Insert at Start, 2 for End, 3 for Middile.");
scanf("%d",&ch);
printf("\n\n\nEnter Element: ");
scanf("%d",&ele);
if(start=='\0')
{
start= (node *)malloc(sizeof(node));
start->next=start;
start->prev=start;
start->data= ele;
end=start;;
}
else if(ch==1)
{
temp = (node *)malloc(sizeof(node));
temp->prev=end;
temp->next= start;
temp->data= ele;
start=temp;
}
else if(ch==2)
{
temp = (node *)malloc(sizeof(node));
temp->next= start;
temp->prev='\0';
temp->data= ele;
temp->prev=end;
end->next=temp;
start->prev=end
end=temp;
}
else if(ch==3)
{
int p,i;
printf("Enter Position: ");
scanf("%d",&p);
temp=start;
for(i=1;i<p-1;i++)
temp=temp->next;

27

if(p==1)
{
temp1 = (node *)malloc(sizeof(node));
temp1->prev=end;
temp1->next= start;
temp1->data= ele;
start=temp1;
end->next=start;
}
else
{
temp1 = (node *)malloc(sizeof(node));
temp1->prev=temp1->next='\0';
temp1->data=ele;
temp1->prev=temp;
temp1->next=temp->next;
temp->next=temp1;
}
}
else
{
printf("\n\t\tWrong Choice....");
}
}
void dis()
{
temp=start;
printf("\n\n\t\t\tElements of Link List are:\n");
while(temp!='\0')
{
printf("\t- %3d\n",temp->data);
temp=temp->next;
}
getch();
}

28

void del()
{
int item;
textcolor(RED);
if(start=='\0')
cprintf("\n\n\t\tList is EMPTY....");
else
{
printf("\n\n\t\t1 for Delete from Start, 2 for End, 3 for
Middile.");
scanf("%d",&ch);
if(start==end)
{
item=start->data;
temp=start;
end=start='\0';
if(ch==1)
{
item=start->data;
temp=start;
start=start->next;
start->prev='\0';
}
else if(ch==2)
{
item=end->data;
end=end->prev;
end->next='\0';
}
else if(ch==3)
{
int p,i;
printf("Enter Position: ");
scanf("%d",&p);
temp=start;
for(i=1;i<p;i++)
temp=temp->next;
temp->prev->next=temp->next;
temp->next->prev=temp->prev;
item=temp->data;
}
else
printf("\n\n\t\tWrong Choice....");
}
}

29

Program 11
Program for Convert Infix Expression into Postfix
Expression and then Evaluate the Postfix
Expression
int op(char tk);
void main()
{
int i=0,tos=-1,j=0,val=0,eval[20],f=0;
char stk[50],pos[50],inf[50],tk;
clrscr();
printf("\t\tEnter the INFIX expression : ");
gets(inf);
tk=inf[i];
while(tk!='\0')
{
if(isalpha(tk)&&f==0)
{
pos[j++]=tk;
f=1;
}
else if(f==1)
{
if(tos==-1)
stk[++tos]=tk;
else if(op(tk)<=op(stk[tos]))
{
while(op(tk)<=op(stk[tos])&&tos!=-1)
pos[j++]=stk[tos--];
stk[++tos]=tk;
}
else
stk[++tos]=tk;
f=0;
}
else
{
printf("\n\n\n\t\t\tWrong Expression....");
getch();
exit(1);
}
tk=inf[++i];
}

30

while(tos!= -1)
{
pos[j++]=stk[tos--];
}
pos[j]='\0';
printf("\n\n\tThe Postfix Expression is : %s\n\n\n",pos);
i=0;
tk=pos[i];
tos=-1;
while(tk!='\0')
{
if(isalpha(tk))
{
printf("\tEnter value for %c : ",tk);
scanf("%d",&val);
eval[++tos]=val;
}
else
{
int z=0;
if(tk=='+')
z=eval[tos]+eval[tos-1];
if(tk=='-')
z=eval[tos-1]-eval[tos];
if(tk=='*')
z=eval[tos]*eval[tos-1];
if(tk=='/')
z=eval[tos-1]/eval[tos];
if(tk=='%')
z=eval[tos-1]%eval[tos];
if(tk=='^')
z=pow(eval[tos],eval[tos-1]);
eval[--tos]=z;
}
tk=pos[++i];
}
printf("\n\n\n\tEvaluation of POSTFIX expression = %d",eval[0]);
getch();
}
int op(char tk)
{
if(tk=='+'||tk=='-')
return 1;
if(tk=='%'||tk=='/'||tk=='*')
return 2;
if(tk=='^'||tk=='$')
return 3;
}

31

Program 12
Program for Insertion, Deletion and Traverse in
Queue.
#define size 5
void enque();
void deque();
void dis();
int que[size],f=-1,r=-1;
main()
{
int ch=0;
while(ch!=4)
{
clrscr();
printf("\n\n");
printf("\t\t\t--------------------------\n");
printf("\t\t\t| Press 1 for insert
|\n");
printf("\t\t\t| Press 2 for Delete
|\n");
printf("\t\t\t| Press 3 for Display |\n");
printf("\t\t\t| Press 4 for Exit
|\n");
printf("\t\t\t--------------------------\n\t\t\t\t\t");
scanf("%d",&ch);
switch(ch)
{
case 1: enque();
break;
case 2: deque();
break;
case 3: dis();
break;
case 4:
break;
default: printf("Enter Right Choice....");
}
getch();
}
}
void enque()
{
int e;
if(r==size-1)
{
printf("Queue is Full....");
return 1;
}

32

if(f==-1)
f++;
printf("\n\n\t\tEnter Element:");
scanf("%d",&e);
que[++r]=e;
printf("\n\n\t\tElement Inserted....");
}
void deque()
{
if(f==-1)
{
printf("Queue is Empty....");
return 1;
}
if(r==f)
f=r=-1;
else
f++;
printf("\n\n\t\tElement is Deleted....");
}
void dis()
{
int i;
printf("\n\n\t\tElements in Queue:");
for(i=f;i<=r;i++)
printf("\n\t\t\t=> %d",que[i]);
}

33

Program 13
Program for Insertion, Deletion and Traverse in
Circular Queue.
#define size 5
void enque();
void deque();
void dis();
int que[size],f=-1,r=-1;
main()
{
int ch=0;
while(ch!=4)
{
clrscr();
printf("\n\n");
printf("\t\t\t--------------------------\n");
printf("\t\t\t| Press 1 for insert
|\n");
printf("\t\t\t| Press 2 for Delete
|\n");
printf("\t\t\t| Press 3 for Display |\n");
printf("\t\t\t| Press 4 for Exit
|\n");
printf("\t\t\t--------------------------\n\t\t\t\t\t");
scanf("%d",&ch);
switch(ch)
{
case 1: enque();
break;
case 2: deque();
break;
case 3: dis();
break;
case 4:
break;
default: printf("Enter Right Choice....");
}
getch();
}
}
void enque()
{
int e;
if((r+1)%size==f)
{
printf("Queue is Full....");
return 1;
}
34

if(f==-1)
f++;
printf("\n\n\t\tEnter Element:");
scanf("%d",&e);
r++;
if(r==size)
r=0;
que[r]=e;
printf("\n\n\t\tElement Inserted....");
}
void deque()
{
if(f==-1)
{
printf("Queue is Empty....");
return 1;
}
if(r==f)
f=r=-1;
else
f++;
printf("\n\n\t\tElement is Deleted....");
}
void dis()
{
int i;
printf("\n\n\t\tElements in Queue:");
if(f<=r)
for(i=f;i<=r;i++)
printf("\n\t\t\t=> %d",que[i]);
else
{
for(i=f;i<size;i++)
printf("\n\t\t\t=> %d",que[i]);
for(i=0;i<=r;i++)
printf("\n\t\t\t=> %d",que[i]);
}
}

35

Program 14
Program for Insertion, Deletion and Traverse in
Queue Link List Implementation.
void insert();
void dis();
void del();
typedef struct node
{
int data;
struct node *next;
}node;
node *start,*end,*temp;
main()
{
int i, ch;
while(ch!=4)
{
clrscr();
printf("\n\n");
printf("\t\t\t--------------------------\n");
printf("\t\t\t| Press 1 for insert
|\n");
printf("\t\t\t| Press 2 for Delete
|\n");
printf("\t\t\t| Press 3 for Display |\n");
printf("\t\t\t| Press 4 for Exit
|\n");
printf("\t\t\t--------------------------\n\t\t\t\t\t\t");
scanf("%d",&ch);
switch(ch)
{
case 1: insert();
break;
case 2: del();
break;
case 3: dis();
break;
case 4:
break;
default: printf("Enter Right Choice....");
getch();
}
}
}
void insert()
{
int item,pos,i;
node *t;
temp=(node *)malloc(sizeof(node));
temp->next='\0';
printf("Enter Data in NODE : ");
36

scanf("%d",&item);
temp->data=item;
if(start=='\0')
{
start=temp;
end=temp;
}
else
{
end->next=temp;
end=temp;
}
printf("\n\n\t\t\tItem Inserted....");
}
void dis()
{
printf("\n\n");
temp=start;
if(start=='\0')
{
printf("\n\nNo Element to display....");
return 1;
}
while(temp->next!='\0')
{
printf("%d ",temp->data);
temp=temp->next;
}
getch();
}
void del()
{
int item;
node *t;
if(start=='\0')
printf("\n\n\t\tNo node to delete....");
else
if(start==end)
start=end='\0';
else
{
t=start;
start=start->next;
}
printf("\n\n\t\t\tNode deleted....");
}

37

Program 15
Program for Insertion, Deletion and Traverse in
Circular Queue Link List Implementation.
void insert();
void dis();
void del();
typedef struct node
{
int data;
struct node *next;
}node;
node *start,*end,*temp;
main()
{
int i, ch;
while(ch!=4)
{
clrscr();
printf("\n\n");
printf("\t\t\t--------------------------\n");
printf("\t\t\t| Press 1 for insert
|\n");
printf("\t\t\t| Press 2 for Delete
|\n");
printf("\t\t\t| Press 3 for Display |\n");
printf("\t\t\t| Press 4 for Exit
|\n");
printf("\t\t\t--------------------------\n\t\t\t\t\t\t");
scanf("%d",&ch);
switch(ch)
{
case 1: insert();
break;
case 2: del();
break;
case 3: dis();
break;
case 4:
break;
default: printf("Enter Right Choice....");
}
getch();
}
}

38

void insert()
{
int item,pos,i;
node *t;
temp=(node *)malloc(sizeof(node));
temp->next='\0';
printf("Enter Data in NODE : ");
scanf("%d",&item);
temp->data=item;
if(start=='\0')
{
start=temp;
end=temp;
end->next=start;
}
else
{
temp->next=start;
end->next=temp;
end=temp;
}
printf("\n\n\t\t\tItem Inserted....");
}
void dis()
{
printf("\n\n");
temp=start;
if(start=='\0')
{
printf("\n\nNo Element to display....");
return 1;
}
while(temp->next!=start)
{
printf("%d ",temp->data);
temp=temp->next;
}
printf("%d ",temp->data);
}

39

void del()
{
int item;
node *t;
if(start=='\0')
{
printf("\n\n\t\tNo node to delete....");
}
else
{
if(start==end)
start=end='\0';
else
{
t=start;
start=start->next;
end->next=start;
}
}
printf("\n\n\t\t\tNode deleted....");
}

40

Program 16
Program for Insertion, Deletion and Traverse in
Priority Queue Link List Implementation.
void insert();
void dis();
void del();
typedef struct node
{
int data,p;
struct node *next;
}node;
node *start,*end,*temp;
main()
{
int i, ch;
while(ch!=4)
{
clrscr();
printf("\n\n");
printf("\t\t\t--------------------------\n");
printf("\t\t\t| Press 1 for insert
|\n");
printf("\t\t\t| Press 2 for Delete
|\n");
printf("\t\t\t| Press 3 for Display |\n");
printf("\t\t\t| Press 4 for Exit
|\n");
printf("\t\t\t--------------------------\n\t\t\t\t\t\t");
scanf("%d",&ch);
switch(ch)
{
case 1: insert();
break;
case 2: del();
break;
case 3: dis();
break;
case 4:
break;
default: printf("Enter Right Choice....");
}
}
getch();
}

41

void insert()
{
int item,pos,i;
node *t;
temp=(node *)malloc(sizeof(node));
temp->next='\0';
printf("Enter Data in NODE : ");
scanf("%d",&item);
printf("\nEnter Prioirty: ");
scanf("%d",&temp->p);
temp->data=item;
if(start=='\0')
{
start=temp;
end=temp;
}
else
{
if(end==start)
{
temp->next=start;
start=temp;
}
else
{
t=start;
while(temp->p>=t->next->p&&t->next!='\0')
t=t->next;
temp->next=t->next;
t->next=temp;
}
}
printf("\n\n\t\t\tItem Inserted....");
getch();
}
void dis()
{
printf("\n\n");
temp=start;
while(temp!='\0')
{
printf("\n=> %-8d ",temp->data);
printf("\t%-3d",temp->p);
temp=temp->next;
}
getch();
}
void del()
42

{
int item;
node *t;
if(start=='\0')
{
printf("\n\n\t\tNo node to delete....");
}
else
{
if(start==end)
start=end='\0';
else
{
t=start;
start=start->next;
}
}
printf("\n\n\t\t\tNode deleted....");
getch();
}

43

Program 17
Program for Insertion, Deletion and Traverse in
Priority Queue Array Implementation.
#define size 5
void insert();
void dis();
void del();
int pq[size],que[size],f=-1,r=-1;
main()
{
int i, ch;
while(ch!=4)
{
clrscr();
printf("\n\n");
printf("\t\t\t--------------------------\n");
printf("\t\t\t| Press 1 for insert
|\n");
printf("\t\t\t| Press 2 for Delete
|\n");
printf("\t\t\t| Press 3 for Display |\n");
printf("\t\t\t| Press 4 for Exit
|\n");
printf("\t\t\t--------------------------\n\n\t\t\t\t ");
scanf("%d",&ch);
switch(ch)
{
case 1: insert();
break;
case 2: del();
break;
case 3: dis();
break;
case 4:
break;
default: printf("\n\n\t\t\tEnter Right Choice....");
}
getch();
}
}
void insert()
{
int item,p,i,j;
if(r==size-1)
{
printf("\n\n\n\t\tQueue is Full....");
return 1;
}

44

printf("\n\n\t\tEnter the Element: ");


scanf("%d",&item);
printf("\n\n\t\tEnter the Priority: ");
scanf("%d",&p);
for(i=0;i<=r;i++)
if(p<pq[i])
break;
for(j=size-1;j>i;j--)
{
pq[j]=pq[j-1];
que[j]=que[j-1];
}
pq[i]=p;
que[i]=item;
r++;
printf("\n\n\t\tItem Inserted....");
}
void dis()
{
int i;
if(r==-1)
{
printf("\n\n\t\tQueue is Empty....");
return 1;
}
printf("\n\n");
for(i=0;i<=r;i++)
printf("\n\t\t=> %-2d %d",pq[i],que[i]);
}
void del()
{
int i;
if(r==-1)
{
printf("\n\n\t\tQueue is Empty....");
return 1;
}
for(i=0;i<=r;i++)
{
pq[i]=pq[i+1];
que[i]=que[i+1];
}
r--;
printf("\n\n\t\tItem Deleted....");
}

45

Program 18
Program for Solving TOWER of HANOI Problem
#include<stdio.h>
#include<codio.h>
void main()
{
int n;
clrscr();
printf ("\n Enter the number of disks");
scanf ("%d", &n);
tower (n,'a','b','c');
getch();
}
tower(int n, char from, char temp, char to)
{
if (n<=0)
printf ("\n illegal numbers");
if (n==1)
printf ("\n move disks from %c to %c", from , to);
else
{
tower (n-1, from, to, temp);
tower (1, from, temp, to);
tower (n-1, temp, from, to);
}
}

46

Program 19
Program for Traversal in Binary Search Tree
(INORDER, PREORDER and POSTORDER)
#include<stdio.h>
#include<conio.h>
void ins();
void dis();
void inorder(struct tree *rt);
void preorder(struct tree *rt);
void postorder(struct tree *rt);
typedef struct tree
{
int data;
struct tree *left, *right;
}tree;
tree *root,*rt,*temp,*temp1;
void main()
{
int ch;
while(ch!=3)
{
printf("\n\t\t------------------------------");
printf("\n\t\t| Press 1 for Insert
|");
printf("\n\t\t| Press 2 for Display
|");
printf("\n\t\t| Press 3 for Exit
|");
printf("\n\t\t------------------------------\n\n\t\t");
scanf("%d",&ch);
switch(ch)
{
case 1: ins();
break;
case 2: dis(root);
break;
case 3:
printf("\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\t\t\t");
printf("Thank You....");
break;
default: printf("\n\n\tWrong Choice....");
}
}
}
void ins()
{
47

int i;
temp=(tree *)malloc(sizeof(tree));
temp->left=NULL;
temp->right=NULL;
printf("\n\n\t\tEnter the Data (No duplicacy is allowed) : ");
scanf("%d",& temp->data);
if(root==NULL)
{
root=temp;
}
else
{
rt=root;
in:
if(rt->data < temp->data)
{
if(rt->right==NULL)
{
rt->right=temp;
}
else
{
rt=rt->right;
goto in;
}
}
else if(rt->data>temp->data)
{
if(rt->left==NULL)
{
rt->left=temp;
}
else
{
rt=rt->left;
goto in;
}
}
}
}

48

void dis()
{
int ch;
printf("\n\n\n\tEnter Choice\n\t\t1 - Inorder\n\t\t2 - Preorder\n\t\t3 Postorder\n\t\t\t");
scanf("%d",&ch);
switch(ch)
{
case 1:
inorder(root);
break;
case 2:
preorder(root);
break;
case 3:
postorder(root);
break;
default:
printf("\n\t\tInvalid Choice....");
}
getch();
}
void inorder(tree *rt)
{
if(rt==NULL)
{
}
else
{
if(rt->left!=NULL)
inorder(rt->left);
printf("%3d " ,rt->data);
if(rt->right!=NULL)
inorder(rt->right);
}
}
void preorder(tree *rt)
{
if(rt==NULL)
{
}
else
{
printf("%3d " ,rt->data);
if(rt->left!=NULL)
preorder(rt->left);
if(rt->right!=NULL)
preorder(rt->right);

49

}
}
void postorder(tree *rt)
{
if(rt==NULL)
{
}
else
{
if(rt->left!=NULL)
postorder(rt->left);
if(rt->right!=NULL)
postorder(rt->right);
printf("%3d " ,rt->data);
}
}

50

Program 20
Program for BINARY SEARCH TREE, Dynamic
Implementation
#include<stdio.h>
#include<conio.h>
void ins();
void dis(struct tree *tt);
typedef struct tree
{
int data;
struct tree *left, *right;
}tree;
tree *root,*rt,*temp,*temp1;
int f=0;
void main()
{
int ch;
while(ch!=4)
{
printf("\n\t\t------------------------------");
printf("\n\t\t| Press 1 for Insert
|");
printf("\n\t\t| Press 2 for Delete
|");
printf("\n\t\t| Press 3 for Display
|");
printf("\n\t\t| Press 4 for Exit
|");
printf("\n\t\t------------------------------\n\n\t\t");
scanf("%d",&ch);
switch(ch)
{
case 1: ins();
break;
case 2: del();
break;
case 3: dis(root);
break;
case 4:
printf("\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\t\t\t");
printf("Thank You....");
break;
default: printf("\n\n\tWrong Choice....");
}
getch();
}
}
51

void ins()
{
int i;
temp=(tree *)malloc(sizeof(tree));
temp->left=NULL;
temp->right=NULL;
printf("\n\n\t\tEnter the Data (No duplicacy is allowed) : ");
scanf("%d",& temp->data);
if(root==NULL)
{
root=temp;
}
else
{
rt=root;
in:
if(rt->data < temp->data)
{
if(rt->right==NULL)
{
rt->right=temp;
}
else
{
rt=rt->right;
goto in;
}
}
else if(rt->data>temp->data)
{
if(rt->left==NULL)
{
rt->left=temp;
}
else
{
rt=rt->left;
goto in;
}
}
}
}
void dis(tree *tt)
{
if(tt==NULL)
{
}
else
52

{
if(tt->left!=NULL)
dis(tt->left);
printf("%3d " ,tt->data);
if(tt->right!=NULL)
dis(tt->right);
}
}

53

Program 21
Program for BINARY SEARCH TREE, Static
Implementation
#include<stdio.h>
#include<conio.h>
#include<math.h>
void ins();
void del();
void trav();
void inorder(int i);
void preorder(int i);
void postorder(int i);
void find(int e, int *p, int *c,int i);
int tree[15]={0},f=0,dep=4;
void main()
{
int ch;
while(ch!=4)
{
printf("\n\t\t------------------------------");
printf("\n\t\t| Press 1 for Insert
|");
printf("\n\t\t| Press 2 for Delete
|");
printf("\n\t\t| Press 3 for Display
|");
printf("\n\t\t| Press 4 for Exit
|");
printf("\n\t\t------------------------------\n\n\t\t");
scanf("%d",&ch);
switch(ch)
{
case 1: ins();
break;
case 2: del();
break;
case 3:
trav();
break;
case 4:
printf("\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\t\t\t");
printf("Thank You....");
break;
default: printf("\n\n\tWrong Choice....");
}
getch();
}
54

}
void ins()
{
int i,rt=0;
printf("Enter the value: ");
scanf("%d",&i);
if(f==0)
{
tree[0]=i;
f=1;
}
else
{
n:
if(i<tree[rt])
{
rt=rt*2+1;
if(tree[rt]==0)
tree[rt]=i;
else
{
goto n;
}
}
else if(i>tree[rt])
{
rt=rt*2+2;
if(tree[rt]==0)
tree[rt]=i;
else
{
goto n;
}
}
}
}
void trav()
{
printf("\n\n\tInorder - ");
inorder(0);
printf("\n\tPreorder - ");
preorder(0);
printf("\n\tPosorder - ");
postorder(0);
}
void inorder(int i)
{
if(tree[i]==0)
55

{
else
{

}
if(tree[2*i + 1]!=0)
inorder(2*i + 1);
printf("%3d ",tree[i]);
if(tree[2*i + 2]!=0)
inorder(2*i + 2);

}
}
void preorder(int i)
{
if(tree[i]==0)
{}
else
{
printf("%3d ",tree[i]);
if(tree[2*i + 1]!=0)
preorder(2*i + 1);
if(tree[2*i + 2]!=0)
preorder(2*i + 2);
}
}
void postorder(int i)
{
if(tree[i]==0)
{}
else
{
if(tree[2*i + 1]!=0)
postorder(2*i + 1);
if(tree[2*i + 2]!=0)
postorder(2*i + 2);
printf("%3d ",tree[i]);
}
}

56

Program 22
Program for BINARY SEARCH and Linear Search in
an Array
#include<conio.h>
#include<stdio.h>
#define size 10
void lin(int *a,int e);
void bin(int *a,int e);
void main()
{
int a[size],ich;
clrscr();
printf ("\n enter the elements (In ascending order:\n");
for(i=0; i<size; i++)
{
scanf("%d", &a[i]);
}
printf ("\n enter the element for search");
scanf("%d", &e);
printf("\nPress 1 for Binary Search, Press 2 for Linear Search : ");
scanf("%d",&ch);
if(1==ch)
bin(a,e);
else if(2==ch)
lin(a,e);
else
printf("\n\tWrong Choice");
getch();
}
void bin(int *a,int e)
{
int h,i, m, l, e, f=0;
l=0;
h=9;
m= (l+h)/2;
while (l<h)
{
if (a[m]==e)
{
printf ("element is found %d", e);
f=1;
break;
}

57

else
if (e< a[m])
h= m-1;
else
l= m+1;
m=(l+h)/2;
}
if (f==0)
printf ("\n item not found");
}
void lin(int *a,int e)
{
int i,f==0;
for (i=0; i<10; i++)
{
if (a[i] == e)
{
printf ("element found %d", e);
f=1;
break;
}
}
if (f==0)
printf ("element not found");
}

58

Program 24
Program for Sort the Element in an Array.
(Bubble Sort)
#define size 10
void bubble(int *arr);
void main()
{
int arr[size],i;
printf("Enter the %d elements:\n");
for(i=0;i<size;i++)
scanf("%d",&arr[i]);
bubble(arr);
printf("\n\nThe Sorted array is:\n");
for(i=0;i<size;i++)
printf("%d ",arr[i]);
getch();
}
void bubble(int *arr)
{
int i,j,temp;
for(i=0;i<size-1;i++)
for(j=0;j<size-1-i;j++)
if(arr[j]>arr[j+1])
{
temp=arr[j];
arr[j]=arr[j+1];
arr[j+1]=temp;
}
}

59

Program 25
Program for Sort the Element in an Array.
(Selection Sort)
#define size 10
void selection(int *arr);
void main()
{
int arr[size],i;
printf("Enter the %d elements:\n");
for(i=0;i<size;i++)
scanf("%d",&arr[i]);
selection(arr);
printf("\n\nThe Sorted array is:\n");
for(i=0;i<size;i++)
printf("%d ",arr[i]);
getch();
}
void selection(int *arr)
{
int i,j,temp;
for(i=0;i<size-1;i++)
for(j=i+1;j<size-1;j++)
if(arr[i]>arr[j])
{
temp=arr[j];
arr[j]=arr[i];
arr[i]=temp;
}
}

60

Program 26
Program for Sort the Element in an Array.
(Insertion Sort)
#define size 10
void insertsort(int *arr);
void main()
{
int arr[size],i;
clrscr();
printf("\nEnter the elements in array:\n");
for(i=0;i<size;i++)
{
scanf("%d",&arr[i]);
}
insertsort(arr);
printf("\n\nThe sorted order is:\n");
for(i=0;i<size;i++)
printf("%d ",arr[i]);
getch();
}
void insertsort(int *arr)
{
int i,temp,j;
for(i=1;i<size;i++)
{
temp=arr[i];
for(j=i-1;j>=0;j--)
{
if(arr[j]>temp)
arr[j+1]=arr[j];
else
break;
}
arr[j+1]=temp;
}
}

61

Program 27
Program for Sort the Element in an Array.
(Quick Sort)
#define size 10
void swap(int *x,int *y);
void quicksort(int arr[],int m,int n);
void main()
{
int arr[size],i;
printf("Enter the %d elements:\n",size);
for(i=0;i<size;i++)
scanf("%d",&arr[i]);
quicksort(arr,0,size-1);
printf("\n\nThe Sorted array is:\n");
for(i=0;i<size;i++)
printf("%d ",arr[i]);
getch();
}
void swap(int *x,int *y)
{
int temp;
temp = *x;
*x = *y;
*y = temp;
}
void quicksort(int arr[],int m,int n)
{
int key,i,j,k;
if( m < n)
{
k = (m+n)/2;
swap(&arr[m],&arr[k]);
key = arr[m];
i = m+1;
j = n;

62

while(i <= j)
{
while((i <= n) && (arr[i] <= key))
i++;
while((j >= m) && (arr[j] > key))
j--;
if( i < j)
swap(&arr[i],&arr[j]);
}
swap(&arr[m],&arr[j]);
quicksort(arr,m,j-1);
quicksort(arr,j+1,n);
}
}

63

Program 28
Program for Sort the Element in an Array.
(Merge Sort)
#define size 10
void mergeSort(int arr[], int temp[], int array_size);
void m_sort(int arr[], int temp[], int left, int right);
void merge(int arr[], int temp[], int left, int mid, int right);
int arr[size];
int temp[size];
void main()
{
int i;
clrscr();
printf("Enter the %d elements:\n",size);
for(i=0;i<size;i++)
scanf("%d",&arr[i]);
mergeSort(arr, temp, size);
printf("\n\nThe Sorted array is:\n");
for(i=0;i<size;i++)
printf("%d ",arr[i]);
}
void mergeSort(int arr[], int temp[], int array_size)
{
m_sort(arr, temp, 0, array_size - 1);
}
void m_sort(int arr[], int temp[], int left, int right)
{
int mid;
if (right > left)
{
mid = (right + left) / 2;
m_sort(arr, temp, left, mid);
m_sort(arr, temp, mid+1, right);
merge(arr, temp, left, mid+1, right);
}
}
void merge(int arr[], int temp[], int left, int mid, int right)
{
int i, left_end, num_elements, tmp_pos;

64

left_end = mid - 1;
tmp_pos = left;
num_elements = right - left + 1;
while ((left <= left_end) && (mid <= right))
{
if (arr[left] <= arr[mid])
{
temp[tmp_pos] = arr[left];
tmp_pos = tmp_pos + 1;
left = left +1;
}
else
{
temp[tmp_pos] = arr[mid];
tmp_pos = tmp_pos + 1;
mid = mid + 1;
}
}

while (left <= left_end)


{
temp[tmp_pos] = arr[left];
left = left + 1;
tmp_pos = tmp_pos + 1;
}
while (mid <= right)
{
temp[tmp_pos] = arr[mid];
mid = mid + 1;
tmp_pos = tmp_pos + 1;
}
for (i=0; i <= num_elements; i++)
{
arr[right] = temp[right];
right = right - 1;
}
}

65

You might also like