DSA Lab Internal III Programs
DSA Lab Internal III Programs
1) Traversal Of Trees :
#include<stdio.h>
#include<stdlib.h>
}node;
node * que[20];
node * root = NULL ,*curr;
void main(){
node * p = NodeCreate();
printf("\nInorder Traversal : ");
inOrder(p);
printf("\nPreorder Traversal : ");
preOrder(p);
printf("\nPostorder Traversal : ");
postOrder(p);
}
return ptr;
}
node * findmin(node * ptr){
if(ptr == NULL) return NULL;
if(ptr->left)
return findmin(ptr->left);
else
return ptr;
}
node * del(node * ptr,int ele){
node * p;
if(ptr == NULL)
printf("\nElement not found");
else if( ele < ptr->data)
ptr->left = del(ptr->left , ele);
else if (ele > ptr->data )
ptr->right = del(ptr->right , ele);
else{
if(ptr->right && ptr->left){
p = findmin(ptr->right);
ptr->data = p->data;
ptr->right = del(ptr->right,p->data);
}
else{
p = ptr;
if(ptr->left == NULL )
ptr = ptr->right;
else if(ptr->right == NULL )
ptr = ptr->left;
free(p);
}
}
return ptr;
}
node * search(node * ptr , int ele){
if(ptr == NULL)
return NULL;
if(ele > ptr->data)
return search(ptr->right , ele);
else if( ele < ptr->data)
return search(ptr->left,ele);
else
return ptr;
}
3) Linear Search :
#include <stdio.h>
if (arr[i] == key) {
return i;
return -1;
int main() {
int n, key;
scanf("%d", &n);
int arr[n];
scanf("%d", &arr[i]);
}
printf("Enter the element to search: ");
scanf("%d", &key);
if (result != -1) {
} else {
return 0;
4) Binary Search :
#include <stdio.h>
void main() {
int n;
printf("Enter the value of n: ");
scanf("%d", &n);
int arr[n];
int first, last, middle, key, i;
printf("Enter %d elements in array in ascending order:\n",
n);//reading in ascending form
for (i = 0; i < n; i++) {
printf("Enter the value of arr[%d]: ", i);
scanf("%d", &arr[i]);
}
5) Selection Sort :
void main() {
int size;
int arr[size];
int i,j;
printf("Enter the elements of the array:\n");
for ( i = 0; i < size; i++) {
printf("Enter the value of arr[%d]: ",i);
scanf("%d", &arr[i]); // Input elements of the array
}
6) Insertion Sort :
#include <stdio.h>
int arr[100];
int n;
void insertionSort() {
int i, j, key;
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;
}
}
int main() {
int i;
printf("Enter the number of elements: ");
scanf("%d", &n);
printf("Enter %d elements:\n", n);
for (i = 0; i < n; i++) {
scanf("%d", &arr[i]);
}
insertionSort();
printf("\nElements After Sort : ");
for (i = 0; i < n; i++) {
printf("%d \t", arr[i]);
}
printf("\n");
return 0;
}
7) Heap Sort :
#include<stdio.h>
int a[40],n,i,j,temp;
void adjust(int i,int n){
j = (2*i)+1;
while (j<=(n-1))
{
if(j<n-1)//Strightly less means has a right child
{
if(a[j] < a[j+1])
j++;
}
if(a[i] < a[j]){
temp = a[i];
a[i] = a[j];
a[j] = temp;
}
i = j;
j = (2*i)+1;
}
}
void HeapSort(){
for ( i = ((n/2)-1); i >= 0; i--)
adjust(i,n);
HeapSort();
printf("\nElements After Sort : ");
for(i=0;i<n;i++)
printf("%d \t",a[i]);
}
8) BFS :
#include<stdio.h>
void BFS();
int A[10][10],vis[10],ex[10],n,queue[10],f,r,i,j,k,s;
void main(){
f=r=0;
printf("\nEnter Number of Vertices : ");
scanf("%d",&n);
printf("\nEnter Adjcency Matrix :\n");
for(i=1;i<=n;i++)
for(j=1;j<=n;j++)
scanf("%d",&A[i][j]);
for(i=1;i<=n;i++)
{
vis[i] = 0;
ex[i] = 0;
}
printf("\nEnter the Source Vetiex : ");
scanf("%d",&s);
BFS();
}
void BFS(){
vis[s]=1;
ex[s]=1;
printf("\nBFS Traversing : \n");
printf("%d\t",s);
k = 1;
while(k<n){
for(i=1;i<=n;i++)
{
if(A[s][i] == 1 && vis[i] == 0 && ex[i] == 0)
{
queue[r++] = i;
ex[i] = 1;
}
}
s=queue[f++];
vis[s] = 1;
printf("%d\t",s);
k++;
}
}
9) DFS :
#include<stdio.h>
void DFS();
int A[10][10],vis[10],n,stack[10],i,j,k,s,top;
void main(){
top=-1;
printf("\nEnter Number of Vertices : ");
scanf("%d",&n);
printf("\nEnter Adjcency Matrix :\n");
for(i=1;i<=n;i++)
for(j=1;j<=n;j++)
scanf("%d",&A[i][j]);
for(i=1;i<=n;i++)
vis[i] = 0;
}
printf("\n");
}