DSA File
DSA File
#include <stdio.h>
#include <stdlib.h>
struct node{
int data;
struct node*left;
struct node*right;
};
int main(){
p->left = p1;
p->right = p2;
p->left->left = p3;
p->left->right = p4;
p->right->left = p5;
p->right->right = p6;
printf(" / \\\n");
printf(" / \\ / \\\n");
p->right->left->data, p->right->right->data);
return 0;
}
Enqueue and Dequeue Operation
#include<stdio.h>
#include<stdlib.h>
struct queue
int size;
int f;
int r;
int* arr;
};
if(q->r==q->f){
return 1;
return 0;
if(q->r==q->size-1){
return 1;
return 0;
}
//Enqueue
if(isFull(q)){
else{
q->r++;
q->arr[q->r] = val;
//Dequeue
int a = -1;
if(isEmpty(q)){
else{
q->f++;
a = q->arr[q->f];
return a;
//Calling function
int main(){
struct queue q;
q.size = 100;
q.f = q.r = 0;
enqueue(&q, 12);
enqueue(&q, 15);
enqueue(&q, 1);
dequeue(&q);
dequeue(&q);
dequeue(&q);
return 0;
}
Circular Queue – Enqueue and Dequeue Operation
#include<stdio.h>
#include<stdlib.h>
struct circularQueue
int size;
int f;
int r;
int* arr;
};
if(q->r==q->f){
return 1;
return 0;
if((q->r+1) %q->size==q->f){
return 1;
return 0;
}
//Enqueue
if(isFull(q)){
else{
q->r = ((q->r+1)%q->size);
q->arr[q->r] = val;
//Dequeue
int a = -1;
if(isEmpty(q)){
else{
q->f++;
a = q->arr[q->f];
return a;
//Calling function
int main(){
struct circularQueue q;
q.size = 100;
q.f = q.r = 0;
enqueue(&q, 12);
enqueue(&q, 15);
enqueue(&q, 1);
dequeue(&q);
dequeue(&q);
dequeue(&q);
return 0;
}
Binary tree- Pre, Post and InOrder Traversal
#include <stdio.h>
#include <stdlib.h>
struct node{
int data;
struct node*left;
struct node*right;
};
if (root!= NULL){
preOrder(root->left);
preOrder(root->right);
if (root!= NULL){
postOrder(root->left);
postOrder(root->right);
if(root!= NULL){
inOrder(root->left);
inOrder(root->right);
int main(){
p->left = p1;
p->right = p2;
p1->left = p3;
p2->right = p4;
preOrder(p);
printf("\n");
postOrder(p);
printf("\n");
inOrder(p);
return 0;
}
Bubble Sort
#include <stdio.h>
printf("\n");
int temp;
if (A[j]>A[j+1]){
temp = A[j];
A[j] = A[j+1];
A[j+1] = temp;
int main(){
int A[] = {7,8,65,45,4};
int n = 5;
printArray(A, n);
bubbleSort(A, n);
printArray(A, n);
}
Insertion Sort
#include<stdio.h>
printf("\n");
int key, j;
key = A[i];
j = i-1;
A[j+1] = A[j];
j--;
A[j+1] = key;
int main(){
printArray(A, n);
insertionSort(A, n);
printArray(A, n);
return 0;
}
Selection Sort
#include<stdio.h>
printf("\n");
indexOfMin = i;
indexOfMin = j;
temp = A[i];
A[i] = A[indexOfMin];
A[indexOfMin] = temp;
}
int main(){
int n = 5;
printArray(A, n);
selectionSort(A, n);
printArray(A, n);
return 0;
}
Array
#include <stdio.h>
int main() {
int myArray[5];
myArray[0] = 10;
myArray[1] = 20;
myArray[2] = 30;
myArray[3] = 40;
myArray[4] = 50;
return 0;
}
Linear Search
#include <stdio.h>
if (arr[i] == element) {
return i;
return -1;
int main()
if (result != -1) {
} else {
return 0;
}
Binary Search
#include <stdio.h>
low = 0;
high = size - 1;
if (arr[mid] == element) {
return mid;
low = mid + 1;
} else {
high = mid - 1;
return -1;
int main() {
} else {
return 0;
}
Push and Pop Operations
#include <stdio.h>
#include <stdlib.h>
struct stack{
int size;
int top;
int * arr;
};
if(ptr-> top==-1){
return 1;
else{
return 0;
return 1;
}
else{
return 0;
if (isFull(ptr)){
else{
ptr->top++;
ptr->arr[ptr->top] = val;
if (isEmpty(ptr)){
return -1;
else{
ptr->top--;
return val;
}
int main()
sp->size = 10;
sp->top = -1;
push(sp, 56);
push(sp, 56);
push(sp, 56);
push(sp, 56);
push(sp, 56);
push(sp, 76);
push(sp, 56);
push(sp, 86);
push(sp, 56);
return 0;
}
Count leaf nodes in a binary tree
#include <stdio.h>
#include <stdlib.h>
struct node{
int data;
struct node*left;
struct node*right;
};
if(Z == NULL){
return 0;
}
///If the node is a leaf node
return 1;
int main(){
Z->left = Z1;
Z->right = Z2;
Z->left->left = Z3;
Z->left->right = Z4;
Z->right->left = Z5;
Z->right->right = Z6;
return 0;