You are on page 1of 36

DATA STRUCTURE LAB BY HARSHIT RATHAUR (2020-CSE-20)

NAME OF EXPERIMENT:
Develop a ‘C’ program to create and implement SELECTION SORTING.

PROCEDURE:

//PROGRAM TO SORT AN ARRAY USING SELECTION SORT


#include<stdio.h>
#define max 100
void print(int arr[], int n){
int i;
for(i=0; i<n; i++){
printf("%d \t",arr[i]);
}
}
void swap(int *ap, int *bp){
int temp;
temp = *ap;
*ap = *bp;
*bp = temp;

}
void selectionsort(int arr[], int n){
int i,j,min;
for(i=0; i<n-1; i++){
min = i;
for(j=i+1; j<n; j++){
if(arr[j] < arr[min]){
min = j;
}

Page 1 of 36
DATA STRUCTURE LAB BY HARSHIT RATHAUR (2020-CSE-20)

}
swap(&arr[i], &arr[min]);
}
}
int main(){
int n,arr[max],i;
printf("Enter size Of Array: ");
scanf("%d",&n);
printf("Enter Elements: \n");
for(i=0; i<n; i++){
scanf("%d",&arr[i]);
}
selectionsort(arr,n);
printf("Sorted array is \n");
print(arr,n);
return 0;
}
OUTPUT SCREEN

Page 2 of 36
DATA STRUCTURE LAB BY HARSHIT RATHAUR (2020-CSE-20)

NAME OF EXPERIMENT:
Develop a ‘C’ program to create and implement BUBBLE SORTING

PROCEDURE:
//PROGRAM TO SORT AN ARRAY USING BUBBLE SORT
#include<stdio.h>
#define max 100
void print(int arr[], int n){
int i;
for(i= 0; i<n; i++){
printf("%d \t",arr[i]);
}
}
void swap(int *ap, int *bp){
int temp;
temp = *ap;
*ap = *bp;
*bp = temp;

}
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]);
}

Page 3 of 36
DATA STRUCTURE LAB BY HARSHIT RATHAUR (2020-CSE-20)

}
}
}
int main(){
int n,arr[max],i;
printf("Enter size Of Array: ");
scanf("%d",&n);
printf("Enter Elements: \n");
for(i=0; i<n; i++){
scanf("%d",&arr[i]);
}
Bubblesort(arr,n);
printf("Sorted array is \n");

print(arr,n);
return 0;
}
OUTPUT SCREEN

Page 4 of 36
DATA STRUCTURE LAB BY HARSHIT RATHAUR (2020-CSE-20)

NAME OF EXPERIMENT:
Develop a ‘C’ program to create and implement INSERTION SORTING.

PROCEDURE:
//PROGRAM TO SORT AN ARRAY USING INSERTION SORT
#include<stdio.h>
#define max 100
void print(int arr[], int n){
int i;
for(i=0; i<n; i++){
printf("%d \t",arr[i]);
}
}
void insertionsort(int arr[], int n){
int i,j,temp;
for(i=1; i<n; i++){
temp = arr[i];
j = i-1;
while(j>=0 && arr[j]>temp){
arr[j+1]=arr[j];
j--;
}
arr[j+1]=temp;
}
}
int main()
{
int arr[max],n,i;
printf("Enter Size Of Array: ");
scanf("%d",&n);
Page 5 of 36
DATA STRUCTURE LAB BY HARSHIT RATHAUR (2020-CSE-20)

printf("Enter Elements: \n");


for(i=0; i<n; i++){
scanf("%d",&arr[i]);
}
insertionsort(arr,n);
printf("Sorted Array Using Insertion Sort is: \n");
print(arr,n);
return 0;
}

OUTPUT SCREEN

Page 6 of 36
DATA STRUCTURE LAB BY HARSHIT RATHAUR (2020-CSE-20)

NAME OF EXPERIMENT:
Develop a ‘C’ program to create and implement MERGE SORTING.

PROCEDURE:

//PROGRAM TO SORT AN ARRAY USING MERGE SORT

#include<stdio.h>
#define max 100
void merging(int arr[], int low, int mid,int high){
int i,j,k,merged[max];
i = low;
j = mid+1;
k = low;
while(i<=mid && j<=high)
{
if(arr[i]<=arr[j]){
merged[k]=arr[i];
i++;
}
else{
merged[k]=arr[j];
j++;
}
k++;
}
if(j>high){
while(i<=mid){
merged[k]=arr[i];
i++;
k++;
Page 7 of 36
DATA STRUCTURE LAB BY HARSHIT RATHAUR (2020-CSE-20)

}
}
if(i>mid){
while(j<=high){
merged[k]=arr[j];
j++;
k++;
}
}
for(k=low; k<=high; k++){
arr[k]=merged[k];
}
}
void merge_sort(int arr[], int low, int high){
int mid;
if(low<high){
mid=(low+high)/2;
merge_sort(arr,low,mid);
merge_sort(arr,mid+1,high);
merging(arr,low,mid,high);
}
}
int main(){
int arr[max],i,n;
printf("Enter Size Of Array: ");
scanf("%d",&n);
printf("Enter Elements \n");
for(i=0; i<n; i++){
scanf("%d",&arr[i]);
}

Page 8 of 36
DATA STRUCTURE LAB BY HARSHIT RATHAUR (2020-CSE-20)

merge_sort(arr,0,n-1);
printf("The Sorted Array Using Merge Sort is: \n");
for(i=0; i<n; i++){
printf("%d\t",arr[i]);
}
}

OUTPUT SCREEN

Page 9 of 36
DATA STRUCTURE LAB BY HARSHIT RATHAUR (2020-CSE-20)

NAME OF EXPERIMENT:
Develop a ‘C’ program to create and implement QUICK SORTING.

PROCEDURE:

//PROGRAM TO SORT AN ARRAY USING QUICK SORT

#include<stdio.h>
#define max 100

void swap(int* a, int* b)


{
int t = *a;
*a = *b;
*b = t;
}

int partition (int a[], int low, int high)


{
int pivot = a[low];
int start,end;
start=low;
end=high;
while(start<end)
{
while(a[start]<=pivot)
{
start++;
}
while(a[end]>pivot)
{
Page 10 of 36
DATA STRUCTURE LAB BY HARSHIT RATHAUR (2020-CSE-20)

end--;
}
if(start<end)
{
swap(&a[start],&a[end]);
}

}
swap(&a[low],&a[end]);
return end;
}
void quickSort(int arr[], int low, int high)
{
if (low < high)
{

int loc = partition(arr, low, high);

quickSort(arr, low, loc - 1);


quickSort(arr, loc + 1, high);
}
}

void print(int a[],int n)


{
int i=0;
for(i=0;i<n;i++)
{

Page 11 of 36
DATA STRUCTURE LAB BY HARSHIT RATHAUR (2020-CSE-20)

printf("%d\n",a[i]);
}
}

int main()
{
int n,a[max],i;
printf("Enter Size Of Array: ");
scanf("%d",&n);
printf("Enter Elements Of Array\n");
for(i=0;i<n;i++)
{
scanf("\n %d",&a[i]);
}
quickSort(a,0,n- 1);
printf("Sorted Array Using Quick Sort\n");
print(a,n);
return 0;
}
OUTPUT SCREEN

Page 12 of 36
DATA STRUCTURE LAB BY HARSHIT RATHAUR (2020-CSE-20)

NAME OF EXPERIMENT
Develop a ‘C’ program to create and implement a SINGLY LINKED
LIST. Write functions to insert, delete, and display elements of the
list.
PROCEDURE:
//Program Of Performing Operation On Linked List Written By
Harshit Rathaur
#include<stdio.h>
#include<stdlib.h>
struct node{
int info;
struct node *next;
};
int count_node(struct node *start){
struct node *temp=start;
int count=0;
while(temp!=NULL){
count++;
temp=temp->next;
}
return count;
}
void display(struct node *start){

Page 13 of 36
DATA STRUCTURE LAB BY HARSHIT RATHAUR (2020-CSE-20)

struct node *temp=start;


if(temp==NULL){
printf("\nList is Empty");
return;
}
else{
printf("The List is \n");
while(temp!=NULL){
printf("%d\n",temp->info);
temp=temp->next;
}
}
}
struct node *createnode(){
struct node *ptr;
int item;
ptr=(struct node *)malloc(sizeof(struct node));
if(ptr==NULL){
printf("\nMemory Not Allocated");
}
printf("\nEnter item to Be Inserted: ");
scanf("%d",&item);

Page 14 of 36
DATA STRUCTURE LAB BY HARSHIT RATHAUR (2020-CSE-20)

ptr->info=item;
ptr->next=NULL;
return(ptr);
}
void deleteatbegining(struct node **start){
struct node *temp=*start;
if(*start==NULL){
printf("List is Empty");
return;
}
*start=temp->next;
free(temp);
printf("\nNode Deleted");
}
void deleteatend(struct node **start){
struct node *temp=*start;
struct node *save;
if(*start==NULL){
printf("List is Empty");
return;
}
if(temp->next=NULL){

Page 15 of 36
DATA STRUCTURE LAB BY HARSHIT RATHAUR (2020-CSE-20)

*start=NULL;
}
else{
while(temp->next !=NULL){
save=temp;
temp=temp->next;
}
save->next=NULL;
}
free(temp);
printf("\nNode Deleted");
}
void deleteatanyposition(struct node **start){
struct node *temp= *start, *save;
int i,pos,count;
if(*start==NULL)
{
printf("List is Empty");
return;
}
printf("Enter Position Where To Be Deleted: ");
scanf("%d",&pos);

Page 16 of 36
DATA STRUCTURE LAB BY HARSHIT RATHAUR (2020-CSE-20)

count=count_node(temp);
if(pos>count || pos==0){
printf("\nInvalid Position");
}
if(pos==1){
*start=temp->next;
}
else{
for(i=1; i<pos; i++){
save=temp;
temp=temp->next;
}
save->next=temp->next;
}
free(temp);
printf("\nNode Deleted");
}
void insertatanyposition(struct node **start){
int i,pos,count;
struct node *ptr=createnode();
struct node *temp=*start;
printf("Enter Position Where Node To Be Inserted: ");

Page 17 of 36
DATA STRUCTURE LAB BY HARSHIT RATHAUR (2020-CSE-20)

scanf("%d",&pos);
count=count_node(temp);
if(pos>count+1 || pos==0){
printf("Invalid position");
}
if(pos==1){
ptr->next=*start;
*start=ptr;
}
else{
for(i=1; i<pos-1; i++){
temp=temp->next;
}
ptr->next=temp->next;
temp->next=ptr;
}
printf("Node Inserted\n");
}
void insertatend(struct node **start){
struct node *temp;
struct node *ptr=createnode();
if(*start == NULL){

Page 18 of 36
DATA STRUCTURE LAB BY HARSHIT RATHAUR (2020-CSE-20)

*start=ptr;
}
else{
temp=*start;
while(temp->next != NULL){
temp=temp->next;
}
temp->next=ptr;
}
printf("\nNode Inserted");
}
void insertatbegining(struct node **start){
struct node *ptr=createnode();
if(*start != NULL){
ptr->next=*start;
}
*start=ptr;
printf("\nNode Inserted");
}
int main(){
int choice;
struct node *start=NULL;

Page 19 of 36
DATA STRUCTURE LAB BY HARSHIT RATHAUR (2020-CSE-20)

printf("******************Linked List
Operation***************");
printf("\n1.Display \n2.Insert at Begining \n3.Insert at End
\n4.Insert At In Between \n");
printf("5.Delete at Begining \n6.Delete at End \n7.Delete at
Any Position");
do{
printf("\nEnter Choice: ");
scanf("%d",&choice);
switch(choice){
case 1:
display(start);
break;
case 2:
insertatbegining(&start);
break;
case 3:
insertatend(&start);
break;
case 4:
insertatanyposition(&start);
break;
case 5:

Page 20 of 36
DATA STRUCTURE LAB BY HARSHIT RATHAUR (2020-CSE-20)

deleteatbegining(&start);
break;
case 6:
deleteatend(&start);
break;
case 7:
deleteatanyposition(&start);
break;
}
}while(choice !=8);
}
OUTPUT SCREEN

Page 21 of 36
DATA STRUCTURE LAB BY HARSHIT RATHAUR (2020-CSE-20)

NAME OF EXPERIMENT
Develop a ‘C’ program to create and implement LINEAR SEARCH.
PROCEDURE
//Program To Implement Linear Search Written By Harshit
Rathaur
#include<stdio.h>
#define max 100
void linearsearch(int arr[], int n){
int i,item,count=0;
printf("\nEnter Element To Be Searched: ");
scanf("%d",&item);
printf("\nSearch Result Using Linear Search is Given
Below\n\n");
for(i=0; i<n; i++){
if(arr[i]==item){
printf("Item Found At index: %d\n",i);
count++;
}
}
if(count==0)
printf("Item Not Found");
else if(count>0)
printf("Item Found Total %d Times",count);
}
int main(){
int n,arr[max],i;
printf("Enter Size Of Array: ");
scanf("%d",&n);

Page 22 of 36
DATA STRUCTURE LAB BY HARSHIT RATHAUR (2020-CSE-20)

if(n>0 && n<=max){


printf("Enter Elements\n");
for(i=0; i<n; i++){
scanf("%d",&arr[i]);
}
printf("Below Are The Elements Present in Array\n");
for(i=0; i<n; i++){
printf("%d\t",arr[i]);
}
linearsearch(arr,n);
}
else{
printf("Please Enter Valid Size\n");
}

OUTPUT SCREEN

Page 23 of 36
DATA STRUCTURE LAB BY HARSHIT RATHAUR (2020-CSE-20)

NAME OF EXPERIMENT
Develop a ‘C’ program to create and implement BINARY SEARCH.
PROCEDURE
//Program To Implement Binary Search Written By Harshit
Rathaur
1. RECURSIVE APPROACH
//Program Of Of Binary Search Using Recursive Approach
#include <stdio.h>
#define max 100
int binarySearch(int arr[], int low, int high, int item)
{
int mid;
if (high >= low) {
mid = low + (high - low) / 2;
if (arr[mid] == item)
return mid;
if (arr[mid] > item)
return binarySearch(arr, low, mid - 1, item);
return binarySearch(arr, mid + 1, high, item);
}
return -1;
}

int main()
{
int n,arr[max],i,item;
printf("Enter Size Of Array: ");
scanf("%d",&n);
printf("Enter Elements in Sorted Order\n");
Page 24 of 36
DATA STRUCTURE LAB BY HARSHIT RATHAUR (2020-CSE-20)

for(i=0; i<n; i++){


scanf("%d",&arr[i]);
}
printf("Elements Present in Array Are\n");
for(i=0; i<n; i++){
printf("%d\t",arr[i]);
}
printf("\nEnter item To Be Searched: ");
scanf("%d",&item);
int result = binarySearch(arr, 0, n - 1, item);
if(result == -1)
printf("Element is not present in array");
else
printf("Element is present at index: %d", result);
return 0;
}

RECURSIVE APPROACH OUTPUT SCREEN

Page 25 of 36
DATA STRUCTURE LAB BY HARSHIT RATHAUR (2020-CSE-20)

2. ITERATIVE APPROACH
//Program Of Iterative Approach Of Binary Search
#include <stdio.h>
#define max 100
int binarySearch(int arr[] ,int n, int item)
{
int low = 0, high =n-1;
int mid;
while (high - low > 1) {
int mid = (high + low) / 2;
if (arr[mid] < item) {
low = mid + 1;
}
else {
high = mid;
}
}
if (arr[low] == item) {
printf("Element Found At index: %d",low);
}
else if (arr[high] == item) {
printf("Element Found At index: %d",high);
}
else {
printf("Element Not Found");
}
}

int main()

Page 26 of 36
DATA STRUCTURE LAB BY HARSHIT RATHAUR (2020-CSE-20)

{
int n,i,item,arr[max];
printf("Enter Size Of Array: ");
scanf("%d",&n);
printf("Enter Elements in Sorted Order\n");
for(i=0; i<n; i++){
scanf("%d",&arr[i]);
}
printf("Elements Present in Array Are\n");
for(i=0; i<n; i++){
printf("%d\t",arr[i]);
}
printf("\nEnter item To Be Searched: ");
scanf("%d",&item);
binarySearch(arr,n, item);
return 0;
}

ITERATIVE APPROACH OUTPUT SCREEN

Page 27 of 36
DATA STRUCTURE LAB BY HARSHIT RATHAUR (2020-CSE-20)

NAME OF EXPERIMENT
Develop a ‘C’ program to create and implement a STACK
using arrays.
PROCEDURE
//Program To Implement Stack Using Array Written By Harshit
Rathaur

#include<stdio.h>
#define max 100
void Push(void);
void Pop(void);
void Display(void);
void Exit(void);
int stack[max],n,i,top=-1,choice,data;
int main(){
printf("Enter Size Of Stack: ");
scanf("%d",&n);
printf("What Do You Want
Do\n**********************************\n1.Push\t2.Pop\t3
.Display\t4.Exit\n");
do{
printf("Enter Choice: ");
scanf("%d",&choice);

Page 28 of 36
DATA STRUCTURE LAB BY HARSHIT RATHAUR (2020-CSE-20)

switch(choice){
case 1:
Push();
break;
case 2:
Pop();
break;
case 3:
Display();
break;
case 4:
Exit();
break;
}
}while(choice != 4);
return 0;
}
void Push(){
if(top>=n-1){
printf("Stack OverFlow\n");
}
else{

Page 29 of 36
DATA STRUCTURE LAB BY HARSHIT RATHAUR (2020-CSE-20)

printf("Enter Element To Be Pushed:");


scanf("%d",&data);
printf("\n");
top=top+1;
stack[top]=data;
}
}
void Pop(){
if(top==-1){
printf("Stack Underflow\n");
}
else{
data=stack[top];
top--;
printf("The Popped Element is %d\n",stack[top]);
}
}
void Display(){
if(top==-1){
printf("Stack is Empty\n");
}
else{

Page 30 of 36
DATA STRUCTURE LAB BY HARSHIT RATHAUR (2020-CSE-20)

printf("The Elements in Stack \n");


for(i=top; i>=0; i--){
printf("%d\n",stack[i]);
}
}
}
void Exit(){
printf("Exited.....");
}
OUTPUT SCREEN

Page 31 of 36
DATA STRUCTURE LAB BY HARSHIT RATHAUR (2020-CSE-20)

NAME OF EXPERIMENT
Develop a ‘C’ program to create and implement a QUEUE
using arrays.
PROCEDURE
//Program To Implement Queue Using Array Written By Harshit
Rathaur
#include<stdio.h>
#define max 100
void enqueue(void);
void dequeue(void);
void display(void);
void exit(void);
int front=-1,queue[max], rear=-1,i,n,item,choice;
int main(){
printf("Enter Size Of Queue: ");
scanf("%d",&n);
printf("What Do You Want To Do?\n");
printf("*************************\n");
printf("1.Enqueue\t2.Dequeue\t3.Display\t4.Exit\n");
do{
printf("\nEnter Your Choice: ");
scanf("%d",&choice);

Page 32 of 36
DATA STRUCTURE LAB BY HARSHIT RATHAUR (2020-CSE-20)

switch(choice){
case 1:
enqueue();
break;
case 2:
dequeue();
break;
case 3:
display();
break;
case 4:
exit();
break;
}
}while(choice!=4);

}
void enqueue(){
if(rear>=n-1){
printf("Queue is Full");
}
else{

Page 33 of 36
DATA STRUCTURE LAB BY HARSHIT RATHAUR (2020-CSE-20)

printf("Enter Element To Be Inserted: ");


scanf("%d",&item);
rear=rear+1;
front=0;
queue[rear]=item;
}
}
void dequeue(){
if(front==-1 || front>rear){
printf("Queue Underflow");
}
else{
printf("Element Deleted From Queue is
%d\n",queue[front]);
front++;
}
}
void display(){
if(front==-1||front>rear){
printf("Queue is Empty\n");
}
else{

Page 34 of 36
DATA STRUCTURE LAB BY HARSHIT RATHAUR (2020-CSE-20)

for(i=front; i<=rear; i++){


printf("%d\t",queue[i]);
}
}
}
void exit(){
printf("Program Exited......\n");
}

OUTPUT SCREEN

Page 35 of 36
DATA STRUCTURE LAB BY HARSHIT RATHAUR (2020-CSE-20)

Page 36 of 36

You might also like