0% found this document useful (0 votes)
48 views

DSA Practical File

Copyright
© © All Rights Reserved
Available Formats
Download as DOCX, PDF, TXT or read online on Scribd
0% found this document useful (0 votes)
48 views

DSA Practical File

Copyright
© © All Rights Reserved
Available Formats
Download as DOCX, PDF, TXT or read online on Scribd
You are on page 1/ 23

VIT Bhopal University

DSA LAB EXPERIMENT

Course: - Data Structures and Algorithm /CSE2002

Slot: - B12+B13+E11+E12+E13

Submitted to: - Sanat Jain sir

By

Name: Samar Pratap

Registration No.: 23BCE10583

INDEX
1
S.NO Title Page No

1 Bubble Sort implementation 3-4

2 Insertion Sort implementation 5-6

3 Selection Sort implementation 7-8

4 Linear Search implementation 9-10

5 Binary Search Implementation 11-12

6 Single LinkedList implementation 13-18

7 Stack implementation 19-22

Bubble Sort Implementation


Aim: - write a program to implement Bubble Sort.

2
Code: -
#include <stdio.h>

void swap(int* arr, int i, int j)


{
int temp = arr[i];
arr[i] = arr[j];
arr[j] = temp;
}

void bubbleSort(int arr[], int n)


{
int i, j, temp;
for (i = 0; i < n - 1; i++)

for (j = 0; j < n - i - 1; j++)


if (arr[j] > arr[j + 1])
swap(arr, j, j + 1);
}

void printArray(int arr[], int size)


{
int i;
for (i = 0; i < size; i++)
printf("%d ", arr[i]);
printf("\n");
}

int main()
{
int i, n, arr[25];
printf("\n Enter the number of elements: ");
scanf("%d", &n);
printf("\n Enter Data:");
for(i = 0; i < n ; i++){
scanf("%d", &arr[i]);
}
bubbleSort(arr, n);
printf("Sorted array: ");
printArray(arr, n);
return 0;
}

Output: -

3
Insertion Sort implementation
4
Aim: - write a program to implement Insertion Sort.
Code: -
#include <math.h>
#include <stdio.h>
void insertionSort(int arr[], int n)
{
int i, key, j;
for (i = 1; i < n; i++)
{
key = arr[i];
j = i - 1;

while (j >= 0 && arr[j] > key)


{
arr[j + 1] = arr[j];
j = j - 1;
}
arr[j + 1] = key;
}
}
void printArray(int arr[], int n)
{
int i;
for (i = 0; i < n; i++)
printf("%d ", arr[i]);
printf("\n");
}
int main()
{
int i, n, arr[25];
printf("\n Enter the number of elements: ");
scanf("%d", &n);
printf("\n Enter Data:");
for(i = 0; i < n ; i++){
scanf("%d", &arr[i]);
}
printf("Sorted array: ");

insertionSort(arr, n);
printArray(arr, n);

return 0;
}

Output: -

5
Selection Sort implementation

6
Aim: - write a program to implement Selection Sort.
Code: -
#include <iostream>
using namespace std;
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;
}

if (min_idx != i)
swap(arr[min_idx], arr[i]);
}
}

void printArray(int arr[], int size)


{
int i;
for (i = 0; i < size; i++) {
cout << arr[i] << " ";

}
}
int main()
{
int arr[10],n;
cout <<"Enter number of elements"<<endl;
cin >>n;
cout <<"Enter Data:"<<endl;
for(int i=0; i<n; i++){
cin>>arr[i];
}
selectionSort(arr, n);
cout << "Sorted array: ";
printArray(arr, n);
return 0;
}

Output: -

7
Linear Search implementation

8
Aim: - write a program to implement Linear search.
Code: -
#include <stdio.h>

int linearSearch(int* arr, int size, int key)


{
for (int i = 0; i < size; i++) {
if (arr[i] == key) {
return i;
}
}
return -1;
}

int main()
{
int arr[10],n,i;
printf("\n Enter the number of elements: ");
scanf("%d", &n);
printf("\n Enter Data:");
for(i = 0; i < n ; i++){
scanf("%d", &arr[i]);
}
int key;
printf("Enter element to be searched");
scanf("%d",&key);
int index = linearSearch(arr,n, key);

if (index == -1) {
printf("The element is not present in the arr.");
}
else {
printf("The element is present at arr[%d].", index);
}

return 0;
}

Output: -

9
Binary Search implementation

10
Aim: - write a program to implement binary search.
Code: -
#include <stdio.h>
int binarySearch(int arr[], int l, int r, int x)
{

if (r >= l) {
int mid = l + (r - l) / 2;
if (arr[mid] == x)
return mid;
if (arr[mid] > x) {
return binarySearch(arr, l, mid - 1, x);
}
return binarySearch(arr, mid + 1, r, x);
}
return -1;
}

int main(void)
{

int arr[10],n,i;
printf("\n Enter the number of elements: ");
scanf("%d", &n);
printf("\n Enter Data:");
for(i = 0; i < n ; i++){
scanf("%d", &arr[i]);
}

int key;
printf("Enter element to be searched");
scanf("%d",&key);

int index = binarySearch(arr, 0, n- 1, key);

if (index == -1) {
printf("Element is not present in array");
}
else {
printf("Element is present at index %d", index);
}

return 0;
}

Output: -

11
Singly LinkedList implementation
Aim: - write a program to implement Singly LinkedList search.

12
Code: -
#include <stdio.h>
#include <stdlib.h>

struct slinklist {
int data;
struct slinklist *next;
};

typedef struct slinklist node;


node *start = NULL;

int menu() {
int ch;
printf("\n 1. Create a list");
printf("\n 2. Insert a node at the beginning");
printf("\n 3. Insert a node at the end");
printf("\n 4. Insert a node at the middle");
printf("\n 5. Delete a node from the beginning");
printf("\n 6. Delete a node from the end");
printf("\n 7. Delete a node from the middle");
printf("\n 8. Traverse the list (Left to Right)");
printf("\n 9. Traverse the list (Right to Left)");
printf("\n 10. Count nodes");
printf("\n 11. Exit");
printf("\n\n Enter your choice: ");
scanf("%d", &ch);
return ch;
}

node* getnode() {
node *newnode;
newnode = (node *)malloc(sizeof(node));
printf("\n Enter data: ");
scanf("%d", &newnode->data);
newnode->next = NULL;
return newnode;
}

void createlist(int n) {
int i;
node *newnode;
node *temp;
for (i = 0; i < n; i++) {
newnode = getnode();
if (start == NULL) {
start = newnode;
} else {
temp = start;
while (temp->next != NULL)
temp = temp->next;
temp->next = newnode;
}
}
}

void traverse() {

13
node *temp;
temp = start;
printf("\n The contents of List (Left to Right): \n");
if (start == NULL) {
printf("\n Empty List");
return;
} else {
while (temp != NULL) {
printf("%d --> ", temp->data);
temp = temp->next;
}
}
printf("X\n");
}

void rev_traverse(node *start) {


if (start == NULL) {
return;
} else {
rev_traverse(start->next);
printf("%d --> ", start->data);
}
}

void insert_at_beg() {
node *newnode;
newnode = getnode();
if (start == NULL) {
start = newnode;
} else {
newnode->next = start;
start = newnode;
}
}

void insert_at_end() {
node *newnode, *temp;
newnode = getnode();
if (start == NULL) {
start = newnode;
} else {
temp = start;
while (temp->next != NULL)
temp = temp->next;
temp->next = newnode;
}
}

void insert_at_mid() {
node *newnode, *temp, *prev;
int pos, nodectr, ctr = 1;
newnode = getnode();
printf("\n Enter the position: ");
scanf("%d", &pos);
nodectr = countnode(start);
if (pos > 1 && pos < nodectr) {
temp = prev = start;
while (ctr < pos) {
prev = temp;

14
temp = temp->next;
ctr++;
}
prev->next = newnode;
newnode->next = temp;
} else {
printf("Position %d is not a middle position.\n", pos);
}
}

void delete_at_beg() {
node *temp;
if (start == NULL) {
printf("\n No nodes exist.");
return;
} else {
temp = start;
start = temp->next;
free(temp);
printf("\n Node deleted.");
}
}

void delete_at_last() {
node *temp, *prev;
if (start == NULL) {
printf("\n Empty List.");
return;
} else {
temp = start;
prev = start;
while (temp->next != NULL) {
prev = temp;
temp = temp->next;
}
prev->next = NULL;
free(temp);
printf("\n Node deleted.");
}
}

// ... (previous code)

void delete_at_mid() {
int ctr = 1, pos, nodectr;
node *temp, *prev;
if (start == NULL) {
printf("\n Empty List.");
return;
}
printf("\n Enter position of node to delete: ");
scanf("%d", &pos);
nodectr = countnode(start);
if (pos > nodectr) {
printf("\n This node does not exist.");
} else if (pos > 1 && pos < nodectr) {
temp = prev = start;
while (ctr < pos) {
prev = temp;

15
temp = temp->next;
ctr++;
}
prev->next = temp->next;
free(temp);
printf("\n Node deleted.");
} else {
printf("\n Invalid position.");
}
}

int countnode(node *ptr) {


int count = 0;
while (ptr != NULL) {
count++;
ptr = ptr->next;
}
return count;
}

int main(void) {
int ch, n;
while (1) {
ch = menu();
switch (ch) {
case 1:
if (start == NULL) {
printf("\n Number of nodes you want to create: ");
scanf("%d", &n);
createlist(n);
printf("\n List created.");
} else {
printf("\n List is already created.");
}
break;
case 2:
insert_at_beg();
break;
case 3:
insert_at_end();
break;
case 4:
insert_at_mid();
break;
case 5:
delete_at_beg();
break;
case 6:
delete_at_last();
break;
case 7:
delete_at_mid();
break;
case 8:
traverse();
break;
case 9:
printf("\n The contents of List (Right to Left): \n");
rev_traverse(start);

16
printf("X\n");
break;
case 10:
printf("\n Number of nodes: %d\n", countnode(start));
break;
case 11:
exit(0);
default:
printf("\n Invalid choice. Please try again.");
}
}
return 0;
}

Output: -

17
18
Stack implementation
Aim: - write a program to implement Stack.
Code: -
#include <stdio.h>
#include <stdlib.h>

#define MAX 6

int stack[MAX];
int top = 0;

int menu() {
int ch;
printf("\n... Stack operations using ARRAY ...");
printf("\n-----------**********-------------\n");
printf("\n1. Push");
printf("\n2. Pop");
printf("\n3. Display");
printf("\n4. Quit");
printf("\nEnter your choice: ");
scanf("%d", &ch);
return ch;
}

void display() {
int i;
if (top == 0) {
printf("\n\nStack empty.");
return;
} else {
printf("\n\nElements in stack:");
for (i = 0; i < top; i++)
printf("\t%d", stack[i]);
}
}

19
void pop() {
if (top == 0) {
printf("\n\nStack Underflow.");
return;
} else
printf("\n\nPopped element is: %d", stack[--top]);
}

void push() {
int data;
if (top == MAX) {
printf("\n\nStack Overflow.");
return;
} else {
printf("\n\nEnter data: ");
scanf("%d", &data);
stack[top] = data;
top++;
printf("\nData pushed into the stack.");
}
}

int main() {
int ch;
do {
ch = menu();
switch (ch) {
case 1:
push();
break;
case 2:
pop();
break;
case 3:
display();
break;
case 4:
exit(0);
}
} while (1);
}

20
Output: -

21
22

You might also like