SETH JAI PRAKASH MUKAND LAL INSTITUTE
OF ENGINEERING AND TECHNOLOGY
DSA PRACTICAL FILE
Bachelor of Technology (B.Tech) in CSE
Kurukshetra University Kurukshetra
SUBMITTED BY: SUBMITTED TO:
VISHAL KUMAR ER.MEENAKSHI
1222197 (A.P., CSE DEPT.)
2CSE-B
Department of Computer Science & Engineering
JMIT Radaur
INDEX
Sr. Experiment Title Page Date Signature
No. No.
1 Write a program to find smallest and largest
element in array.
2 Write a program to implement linear search.
3 Write a program to implement Binary search.
4 Write a program to insert an element in an array.
5 Write a program to delete element in an array.
6 Write a program to implement Insertion Sort.
7 Write a program to implement Bubble Sort.
8 Write a program to implement Selection Sort.
9 Write a program to implement stack and its
operations.
10 Program to convert Infix to Postfix expression.
11 Program for the Evaluation of Postfix expression.
12 Program to implement Quick Sort.
Department: Computer Science & Engineering [1222197]
13 Program to implement Merge Sort.
14 Program to implement Linear Queue and its
Operations.
15 Program to implement Circular Queue and its
operations.
Department: Computer Science & Engineering [1222197]
PROGRAM 1
Write a program to find smallest and largest element in array.
// LARGEST AND SMALLEST ELEMENTS IN ARRAY
#include<stdio.h>
#include<conio.h>
int main()
int a[100],i,n,lar,sma;
clrscr();
printf("the total number of elements:");
scanf("%d",&n);
printf("\nelements in array are:");
for(i=0;i<n;i++)
scanf("%d",&a[i]);
lar=sma=a[0];
for(i=1;i<n;i++)
if(a[i]>lar)
lar=a[i];
if(a[i]<sma)
sma=a[i];
Department: Computer Science & Engineering [1222197]
}
printf("\n the larger no is %d",lar);
printf("\n the smaller no is %d",sma);
getch();
OUTPUT:
Department: Computer Science & Engineering [1222197]
PROGRAM 2
Write a program to implement linear search
#include<stdio.h>
#include<conio.h>
findElement(int arr[], int n,int key)
int i;
for(i=0;i<n;i++)
if(arr[i]==key)
return i;
return -1;
int main()
int arr[]={12,4,15, 34, 40};
int key=40;
int n =sizeof(arr)/sizeof(arr[0]);
int result=findElement(arr,n,key);
clrscr();
if(result==-1)
printf("the element is not present:");
else
printf("element %d is at index %d",key,result);
Department: Computer Science & Engineering [1222197]
getch();
OUTPUT:
Department: Computer Science & Engineering [1222197]
PROGRAM 3
Write a program to implement Binary search
// program for binary search
#include <stdio.h>
int main()
{
int c, first, last, middle, n, search, array[100];
printf("Enter number of elements\n");
scanf("%d", &n);
printf("Enter %d integers\n", n);
for (c = 0; c < n; c++)
scanf("%d", &array[c]);
printf("Enter value to find\n");
scanf("%d", &search);
first = 0;
last = n - 1;
middle = (first+last)/2;
while (first <= last) {
if (array[middle] < search)
first = middle + 1;
else if (array[middle] == search) {
printf("%d found at location %d.\n", search, middle+1);
break;
Department: Computer Science & Engineering [1222197]
}
else
last = middle - 1;
middle = (first + last)/2;
}
if (first > last)
printf("Not found! %d isn't present in the list.\n", search);
return 0;
}
OUTPUT:
Department: Computer Science & Engineering [1222197]
PROGRAM 4
Write a program to insert an element in an array.
// INSERTION IN ARRAY
#include<stdio.h>
#include<conio.h>
int main()
int arr[100]={1,2,3,4,5,6,7,8,9,10};
int i, insert,pos,n=10;
for(i=0;i<10;i++)
arr[i]=i+1;
for(i=0;i<10;i++)
printf("%3d",arr[i]);
printf("\n");
insert=40;
pos=5;
n++;
for(i=n;i>=pos;i--)
arr[i]=arr[i-1];
Department: Computer Science & Engineering [1222197]
arr[pos-1]=insert;
for(i=0;i<n;i++)
printf("%3d",arr[i]);
getch();
OUTPUT:
Department: Computer Science & Engineering [1222197]
PROGRAM 5
Write a program to delete element in an array.
#include<stdio.h>
#include<conio.h>
// Function to delete an element in array
int findElement(int array[], int size, int keyToBeDeleted);
int deleteElement(int array[], int size, int keyToBeDeleted)
int pos = findElement(array, size, keyToBeDeleted);
if (pos == - 1)
printf("Element not found");
return size;
int i;
for (i = pos; i < size - 1; i++)
array[i] = array[i + 1];
return size - 1;
int findElement(int array[], int size, int keyToBeDeleted)
int i;
Department: Computer Science & Engineering [1222197]
for (i = 0; i < size; i++)
if (array[i] == keyToBeDeleted)
return i;
return - 1;
int main()
int array[] = { 31, 27, 3, 54, 67, 31 };
int size = sizeof(array) / sizeof(array[0]);
int i, keyToBeDeleted = 67;
printf("n Before Deletion: ");
for (i = 0; i < size; i++)
printf("%d ", array[i]);
// Calling the function to delete an element from the array
size = deleteElement(array, size, keyToBeDeleted);
printf("n After Deletion: ");
for (i = 0; i < size; i++)
printf("%d ",array[i]);
return 0;
Department: Computer Science & Engineering [1222197]
OUTPUT:
Department: Computer Science & Engineering [1222197]
PROGRAM 6
Write a program to implement Insertion Sort.
// program for insertion sort : find the smallest element from the array and check it
with previous element.
#include<stdio.h>
#include<conio.h>
int main()
{
int i,j,s,temp,a[20];
printf("enter the total elements:");
scanf("%d",&s);
printf("\ninput the element:");
for(i=0;i<s;i++)
{
scanf("%d",&a[i]);
}
for(i=1;i<s;i++)
{
temp=a[i];
j=i-1;
while((temp<a[j])&&(j>=0)) // j is the previous elemt of i
{
a[j+1]=a[j];
j=j-1;
}
a[j+1]=temp;
}
printf("\nAfter sorting:");
for(i=0;i<s;i++)
{
printf("\t%d",a[i]);
Department: Computer Science & Engineering [1222197]
}
return 0;
}
OUTPUT:
Department: Computer Science & Engineering [1222197]
PROGRAM 7
Write a program to implement Bubble Sort.
#include<stdio.h>
#include<conio.h>
// swapping
void swap(int *xp, int*yp)
int temp;
temp=*xp;
*xp=*yp;
*yp=temp;
// bubble sort implementation
void BubbleSort(int arr[],int n)
int i,j;
for(i=0;i<n-1;i++)
for(j=0;j<n-i-1;j++)
if(arr[j]>arr[j+1])
swap(&arr[j],&arr[j+1]);
// to print the array
Department: Computer Science & Engineering [1222197]
void printElement(int arr[],int n)
int i;
for(i=0;i<n;i++)
printf("%3d",arr[i]);
printf("\n");
int main()
int arr[]={64,34,25,12,22,11,90};
int n =sizeof(arr)/sizeof(arr[0]);
BubbleSort(arr,n);
printf("Sorted array:\n");
printElement(arr,n);
getch();
OUTPUT:
Department: Computer Science & Engineering [1222197]
PROGRAM 8
Write a program to implement Selection Sort.
#include<stdio.h>
#include<conio.h>
void swap(int *xp, int *yp)
{
int temp=*xp;
*xp=*yp;
*yp=temp;
}
void selectionSort(int arr[], int n )
{
int i , j , min_idx;
for(i=0;i<n-1;i++)
{
min_idx=i;
for(j=i+1;j<n;j++)
if(arr[j]<arr[min_idx])
min_idx=j;
swap(&arr[min_idx],&arr[i]);
}}
void printArray(int arr[], int n)
{
int i;
Department: Computer Science & Engineering [1222197]
for(i=0;i<n;i++)
printf("%3d",arr[i]);
printf("\n");
}
void main()
{
int arr[]={12,34,56,10,16};
int n = sizeof(arr)/ sizeof(arr[0]);
selectionSort(arr,n);
printf(" sorted array:");
printArray(arr,n);
getch();
}
OUTPUT:
Department: Computer Science & Engineering [1222197]
PROGRAM 9
Write a program to implement stack and its operations.
#include<stdio.h>
#include<process.h>
#include<stdlib.h>
# define MAX 5
int top=-1,stack[MAX];
void push();
void pop();
void display();
int main()
int ch;
while(1)
printf(".**stack menu*:\n");
printf("\n\n1.Push\n2.Pop\n3.Display\n.4.Exit");
printf("\n\nenter yout choice[1-4]:");
scanf("%d",&ch);
switch(ch)
case 1:push();
Department: Computer Science & Engineering [1222197]
break;
case 2:pop();
break;
case 3:display();
break;
case 4:exit(0);
default:printf("\n wrong choice");
void push()
int value;
if(top==MAX-1)
printf("\nstack is full.");
else
printf("\nenter the elements:");
scanf("%d",&value);
top=top+1;
stack[top]=value;
Department: Computer Science & Engineering [1222197]
}
void pop()
if(top==-1)
printf("\nthe stack is empty:");
else
printf("\ndelete the element:");
top=top-1;
void display()
int i;
if(top==-1)
printf("stack is empty");
else
Department: Computer Science & Engineering [1222197]
printf("the stack is full");
printf("\nstack is:");
for(i=top;i>=0;--i)
printf("%d ",stack[i]);
Department: Computer Science & Engineering [1222197]
PROGRAM 10
Program to convert Infix to Postfix expression
#include<stdio.h>
#include<ctype.h>
char stack[100];
int top = -1;
void push(char x)
stack[++top] = x;
char pop()
if(top == -1)
return -1;
else
return stack[top--];
int priority(char x)
if(x == '(')
return 0;
if(x == '+' || x == '-')
Department: Computer Science & Engineering [1222197]
return 1;
if(x == '*' || x == '/')
return 2;
return 0;
int main()
char exp[100];
char *e, x;
printf("Enter the expression : ");
scanf("%s",exp);
printf("\n");
e = exp;
while(*e != '\0')
if(isalnum(*e))
printf("%c ",*e);
else if(*e == '(')
push(*e);
else if(*e == ')')
while((x = pop()) != '(')
printf("%c ", x);
Department: Computer Science & Engineering [1222197]
}
else
while(priority(stack[top]) >= priority(*e))
printf("%c ",pop());
push(*e);
e++;
while(top != -1)
printf("%c ",pop());
OUTPUT:
Department: Computer Science & Engineering [1222197]
PROGRAM 11
Program for the Evaluation of Postfix expression
#include<stdio.h> // implement to evaluation of postfix expression
#include<conio.h>
#include<ctype.h>
int stack[20];
int top=-1;
void push(int x)
stack[++top]=x;
int pop()
return stack[top--];
int main()
char exp[20];
char *e;
int n1,n2,n3,num;
printf("enter the expression:");
scanf("%s",exp);
Department: Computer Science & Engineering [1222197]
e=exp;
while(*e !='\0')
if(isdigit(*e))
num=*e-48;
push(num);
else
n1=pop();
n2=pop();
switch(*e)
case '+':
n3=n1+n2;
break;
case'-':
n3=n2-n1;
break;
Department: Computer Science & Engineering [1222197]
}
case '*':
n3=n1*n1;
break;
case '/':
n3=n2/n1;
break;
push(n3);
e++; }
printf("\nthe result of expression %s=%d\n\n",exp,pop());
return 0;
Department: Computer Science & Engineering [1222197]
OUTPUT:
Department: Computer Science & Engineering [1222197]
PROGRAM 12
Program to implement Quick Sort
#include<stdio.h>
#include<conio.h>
void swap(int* x, int* y)
int temp = *x;
*x = *y;
*y = temp;
int partition (int array[], int low, int high)
int pivot = array[high];
int i = (low - 1);
for (int j = low; j <= high- 1; j++)
if (array[j] < pivot)
i++;
swap(&array[i], &array[j]);
Department: Computer Science & Engineering [1222197]
}
swap(&array[i + 1], &array[high]);
return (i + 1);
void quickSort(int array[], int low, int high)
if (low < high)
int indexPI = partition(array, low, high);
quickSort(array, low, indexPI - 1);
quickSort(array, indexPI + 1, high);
void display(int array[], int size)
int i;
for (i=0; i < size; i++)
printf("%d ", array[i]);
int main()
int array[] = {70, 90, 10, 30, 50, 20, 60};
int size = sizeof(array)/sizeof(array[0]);
Department: Computer Science & Engineering [1222197]
quickSort(array, 0, size-1);
printf("Array after Quick Sorting: ");
display(array, size);
return 0;
OUTPUT:
Department: Computer Science & Engineering [1222197]
PROGRAM 13
Program to implement Merge Sort
// Merge Sort
#include<stdio.h>
#include<conio.h>
void merge(int arr[], int l, int m, int r)
int i, j, k;
int n1 = m - l + 1;
int n2 = r - m;
int L[n1], R[n2];
for (i = 0; i < n1; i++)
L[i] = arr[l + i];
for (j = 0; j < n2; j++)
R[j] = arr[m + 1 + j];
i = 0;
j = 0;
k = l;
while (i < n1 && j < n2)
if (L[i] <= R[j])
Department: Computer Science & Engineering [1222197]
arr[k] = L[i];
i++;
else {
arr[k] = R[j];
j++;
k++;
while (i < n1)
arr[k] = L[i];
i++;
k++;
while (j < n2)
arr[k] = R[j];
j++;
k++;
void mergeSort(int arr[], int l, int r)
Department: Computer Science & Engineering [1222197]
{
if (l < r)
int m = l + (r - l) / 2;
mergeSort(arr, l, m);
mergeSort(arr, m + 1, r);
merge(arr, l, m, r);
void printArray(int A[], int size)
int i;
for (i = 0; i < size; i++)
printf("%d ", A[i]);
printf("\n");
int main()
int arr[] = { 12, 11, 13, 5, 6, 7 };
int arr_size = sizeof(arr) / sizeof(arr[0]);
printf("Given array is \n");
printArray(arr, arr_size);
mergeSort(arr, 0, arr_size - 1);
Department: Computer Science & Engineering [1222197]
printf("\nSorted array is \n");
printArray(arr, arr_size);
return 0;
OUTPUT:
Department: Computer Science & Engineering [1222197]
PROGRAM 14
Program to implement Linear Queue and its Operations
// linear queue
#include <stdio.h>
#include<stdlib.h>
#define MAX 50
void insert();
void deletion();
void display();
int queue_array[MAX];
int rear = - 1;
int front = - 1;
int main()
int choice;
while (1)
printf("1.Insert element to queue \n");
printf("2.Delete element from queue \n");
printf("3.Display all elements of queue \n");
printf("4.Quit \n");
Department: Computer Science & Engineering [1222197]
printf("Enter your choice : ");
scanf("%d", &choice);
switch(choice)
case 1:
insert();
break;
case 2:
deletion();
break;
case 3:
display();
break;
case 4:
exit(1);
default:
printf("Wrong choice \n");
void insert()
int item;
Department: Computer Science & Engineering [1222197]
if(rear == MAX - 1)
printf("Queue Overflow \n");
else
if(front== - 1)
front = 0;
printf("Inset the element in queue : ");
scanf("%d", &item);
rear = rear + 1;
queue_array[rear] = item;
void deletion()
if(front == - 1 || front > rear)
printf("Queue Underflow \n");
return;
else
printf("Element deleted from queue is : %d\n", queue_array[front]);
front = front + 1;
Department: Computer Science & Engineering [1222197]
}
void display()
int i;
if(front == - 1)
printf("Queue is empty \n");
else
printf("Queue is : \n");
for(i = front; i <= rear; i++)
printf("%d ", queue_array[i]);
printf("\n");
Department: Computer Science & Engineering [1222197]
OUTPUT:
Department: Computer Science & Engineering [1222197]
PROGRAM 15
Program to implement Circular Queue and its operations.
// Circular queue
#include<stdio.h>
#include<conio.h>
# define MAX 50
void insert();
void display();
int cqueue_arr[MAX];
int front = -1;
int rear = -1;
void insert(int item) // inserting element
if((front == 0 && rear == MAX-1) || (front == rear+1))
printf("Queue Overflow n");
return;
if(front == -1)
front = 0;
rear = 0;
Department: Computer Science & Engineering [1222197]
}
else
if(rear == MAX-1)
rear = 0;
else
rear = rear+1;
cqueue_arr[rear] = item ;
void deletion()
if(front == -1)
printf("Queue Underflown");
return ;
printf("Element deleted from queue is : %d\n",cqueue_arr[front]);
if(front == rear)
front = -1;
rear=-1;
Department: Computer Science & Engineering [1222197]
else
if(front == MAX-1)
front = 0;
else
front = front+1;
void display() // display
int front_pos = front,rear_pos = rear;
if(front == -1)
printf("Queue is emptyn");
return;
printf("Queue elements :\n");
if( front_pos <= rear_pos )
while(front_pos <= rear_pos)
printf("%d ",cqueue_arr[front_pos]);
front_pos++;
Department: Computer Science & Engineering [1222197]
else
while(front_pos <= MAX-1)
printf("%d ",cqueue_arr[front_pos]);
front_pos++;
front_pos = 0;
while(front_pos <= rear_pos)
printf("%d ",cqueue_arr[front_pos]);
front_pos++;
printf("\n");
int main()
int choice,item;
printf("Input the element for insertion in queue : ");
while (1)
printf("1.Insert element to queue \n");
Department: Computer Science & Engineering [1222197]
printf("2.Display all elements of queue \n");
printf("3.deletion of elements \n");
printf("4.Exit \n");
printf("Enter your choice : ");
scanf("%d", &choice);
switch (choice)
case 1:
printf("Input the element for insertion in queue : ");
scanf("%d", &item);
insert(item);
break;
case 2:
display();
break;
case 3:
deletion();
break;
default:
printf("Wrong choice \n");
while(choice !=4);
Department: Computer Science & Engineering [1222197]
}
OUTPUT:
Department: Computer Science & Engineering [1222197]
Department: Computer Science & Engineering [1222197]