Docfile
Docfile
#include<stdio.h>
int items[MAX];
int top;
}Stack;
s->top = -1;
if(is_full(s)){
printf("Overflow\n");
}else{
s->items[++(s->top)] = item;
if(is_empty(s)){
printf("Underflow!!\n");
return -1;
}else{
return item;
if(is_empty(s)){
printf("Underflow\n");
}else{
for(int i=0;i<=s->top;i++){
printf("%d", s->items[i]);
printf("\n");
int main(){
Stack s;
int end = 0;
int choice;
int ele;
initialize(&s);
while(end==0){
printf("\n");
scanf("%d", &choice);
switch(choice){
case 1:
scanf("%d", &ele);
push(&s, ele);
break;
case 2:
break;
case 3:
show(&s);
break;
case 4:
end = 1;
break;
QUEUE
#include<stdio.h>
#include<stdlib.h>
typedef struct{
int items[MAX];
int front,rear;
}Queue;
q->front = -1;
q->rear = -1;
return q->front==-1;
if(isFull(q)){
printf("Overloaded\n");
return;
if(isEmpty(q)){
q->front=0;
q->items[++q->rear] = item;
if(isEmpty(q)){
printf("Underflow!\n");
return -1;
q->front = -1;
q->rear = -1;
}else{
q->front++;
return item;
if(isEmpty(q)){
printf("Queue is empty\n");
}else{
printf("Queue is : \n");
for(int i=q->front;i<=q->rear;i++){
printf("\n");
int main(){
Queue q;
initializeQueue(&q);
int el;
int choice;
while(choice!=4){
scanf("%d", &choice);
switch(choice){
case 1:
printf("Inset the element in queue :\n");
scanf("%d", &el);
enqueue(&q, el);
break;
case 2:
break;
case 3:
display(&q);
break;
case 4:
break;
LINKED LIST
#include <stdio.h>
#include <stdlib.h>
struct Node {
int data;
};
newNode->data = value;
newNode->next = head;
head = newNode;
newNode->data = value;
newNode->next = NULL;
if (head == NULL) {
head = newNode;
} else {
temp = temp->next;
temp->next = newNode;
newNode->data = value;
if (position == 1) {
newNode->next = head;
head = newNode;
return;
temp = temp->next;
if (temp == NULL) {
} else {
newNode->next = temp->next;
temp->next = newNode;
void deleteFromBeginning() {
if (head == NULL) {
printf("List is empty.\n");
return;
}
head = head->next;
free(temp);
void deleteFromLast() {
if (head == NULL) {
printf("List is empty.\n");
return;
if (head->next == NULL) {
free(head);
head = NULL;
} else {
prev = temp;
temp = temp->next;
prev->next = NULL;
free(temp);
}
// Function to delete node after a specific position
if (head == NULL) {
printf("List is empty.\n");
return;
temp = temp->next;
} else {
temp->next = temp->next->next;
free(toDelete);
int position = 1;
if (temp->data == value) {
printf("Element %d found at position %d.\n", value, position);
return;
temp = temp->next;
position++;
void display() {
if (head == NULL) {
printf("List is empty.\n");
return;
temp = temp->next;
printf("NULL\n");
int main() {
printf("9. Exit\n");
scanf("%d", &choice);
switch (choice) {
case 1:
scanf("%d", &value);
insertAtBeginning(value);
break;
case 2:
scanf("%d", &value);
insertAtLast(value);
break;
case 3:
scanf("%d", &position);
insertAtPosition(value, position);
break;
case 4:
deleteFromBeginning();
break;
case 5:
deleteFromLast();
break;
case 6:
scanf("%d", &position);
deleteAfterPosition(position);
break;
case 7:
scanf("%d", &value);
search(value);
break;
case 8:
display();
break;
case 9:
exit(0);
break;
default:
return 0;
BINARY SEARCH
#include<stdio.h>
int beg = 0;
while(beg<=end){
if(arr[mid]==target){
return mid+1;
if(arr[mid]<target){
beg = mid+1;
else{
end = mid-1;
}
return -1;
int main(){
int n;
scanf("%d", &n);
int arr[n];
for(int i=0;i<n;i++){
scanf("%d", &arr[i]);
int ele;
scanf("%d", &ele);
if(result!=-1){
}else{
INSERTION SORT
#include<stdio.h>
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;
int i;
for(i=0;i<n;i++){
printf("%d", arr[i]);
printf("\n");
int main(){
int n;
scanf("%d", &n);
int arr[n];
for(int i=0;i<n;i++){
scanf("%d", &arr[i]);
printArray(arr,n);
insertionSort(arr, n);
printArray(arr,n);
}
SELECTION SORT
#include<stdio.h>
int i,j,min;
for(int i=0;i<n-1;i++){
min = i;
for(j = i+1;j<n;j++){
if(arr[j]<arr[min]){
min = j;
arr[min] = arr[i];
arr[i] = temp;
int i;
for(i=0;i<n;i++){
printf("%d\n", arr[i]);
int main(){
int n;
scanf("%d", &n);
int arr[n];
printf("enter the elements\n");
for(int i=0;i<n;i++){
scanf("%d", &arr[i]);
printarr(arr, n);
selectionSort(arr,n);
printarr(arr,n);
COUNTING SORT
#include<stdio.h>
for(int i=0;i<n;i++){
printf("%d\n", arr[i]);
for(int i=0;i<n;i++){
if(arr[i]>max){
max = arr[i];
return max;
int output[n+1];
int count[max+1];
for(int i=0;i<=max;i++){
count[i]=0;
for(int i=0;i<n;i++){
count[arr[i]]++;
for(int i=1;i<=max;i++){
count[i] += count[i-1];
for(int i=n-1;i>=0;i--){
output[count[arr[i]-1]] = arr[i];
count[arr[i]]--;
arr[i] = output[i];
int main(){
int n;
scanf("%d", &n);
int arr[n];
for(int i=0;i<n;i++){
scanf("%d", &arr[i]);
}
printf("Before sorting...\n");
printarray(arr,n);
printf("After sorting...\n");
countingSort(arr,n);
printarray(arr,n);
QUICK SORT
#include<stdio.h>
if(first<last){
pivot=first;
i=first;
j=last;
while(i<j){
while(number[i]<=number[pivot]&&i<last)
i++;
while(number[j]>number[pivot])
j--;
if(i<j){
temp=number[i];
number[i]=number[j];
number[j]=temp;
temp=number[pivot];
number[pivot]=number[j];
number[j]=temp;
quicksort(number,first,j-1);
quicksort(number,j+1,last);
int main(){
scanf("%d",&count);
for(i=0;i<count;i++){
scanf("%d\n",&number[i]);
printf("Before sorting...\n");
for(i=0;i<count;i++){
printf("%d\n", number[i]);
quicksort(number,0,count-1);
printf("After sorting...\n");
for(i=0;i<count;i++){
printf("%d\n",number[i]);
return 0;
#include <stdlib.h>
struct Node {
int data;
};
newNode->data = data;
newNode->prev = NULL;
newNode->next = NULL;
return newNode;
if (*head != NULL) {
newNode->next = *head;
(*head)->prev = newNode;
*head = newNode;
printf("Node inserted\n");
}
// Function to insert a node at the end
if (*head == NULL) {
*head = newNode;
printf("node inserted\n");
return;
temp = temp->next;
temp->next = newNode;
newNode->prev = temp;
printf("node inserted\n");
if (position < 1) {
return;
if (position == 1) {
insertAtBeginning(head, data);
return;
}
struct Node* newNode = createNode(data);
temp = temp->next;
if (temp == NULL) {
free(newNode);
return;
newNode->next = temp->next;
if (temp->next != NULL) {
temp->next->prev = newNode;
temp->next = newNode;
newNode->prev = temp;
printf("node inserted\n");
if (*head == NULL) {
return;
}
*head = (*head)->next;
if (*head != NULL) {
(*head)->prev = NULL;
free(temp);
printf("node deleted\n");
if (*head == NULL) {
return;
temp = temp->next;
if (temp->prev != NULL) {
temp->prev->next = NULL;
} else {
free(temp);
printf("node deleted\n");
}
// Function to delete a node after a specified node
temp = temp->next;
return;
temp->next = nodeToDelete->next;
if (nodeToDelete->next != NULL) {
nodeToDelete->next->prev = temp;
free(nodeToDelete);
printf("node deleted\n");
if (temp->data == key) {
printf("Item found\n");
return;
}
temp = temp->next;
if (temp == NULL) {
printf("List is empty.\n");
return;
printf("printing values...\n");
temp = temp->next;
printf("\n");
void displayMenu() {
printf("\n*********Main Menu*********\n\n");
printf("===============================================\n\n");
printf("1.Insert in begining\n");
printf("2.Insert at last\n");
printf("7.Search\n");
printf("8.Show\n");
printf("9.Exit\n\n");
int main() {
while (1) {
displayMenu();
scanf("%d", &choice);
switch (choice) {
case 1:
scanf("%d", &data);
insertAtBeginning(&head, data);
break;
case 2:
printf("Enter value\n\n");
scanf("%d", &data);
insertAtEnd(&head, data);
break;
case 3:
printf("Enter the location\n\n");
scanf("%d", &position);
printf("Enter value\n\n");
scanf("%d", &data);
break;
case 4:
deleteFromBeginning(&head);
break;
case 5:
deleteFromEnd(&head);
break;
case 6:
scanf("%d", &data);
deleteAfterNode(&head, data);
break;
case 7:
scanf("%d", &data);
searchElement(head, data);
break;
case 8:
showList(head);
break;
case 9:
exit(0);
default:
return 0;
#include <stdlib.h>
struct Node {
int data;
};
newNode->data = value;
if (head == NULL) {
head = newNode;
} else {
temp = temp->next;
}
temp->next = newNode;
newNode->next = head;
head = newNode;
printf("node inserted\n");
newNode->data = value;
if (head == NULL) {
head = newNode;
} else {
temp = temp->next;
temp->next = newNode;
printf("node inserted\n");
void deleteFromBeginning() {
if (head == NULL) {
if (head->next == head) {
free(head);
head = NULL;
} else {
last = last->next;
last->next = head->next;
head = head->next;
free(temp);
printf("node deleted\n");
void deleteFromEnd() {
if (head == NULL) {
return;
if (head->next == head) {
free(head);
head = NULL;
} else {
prev = temp;
temp = temp->next;
prev->next = head;
free(temp);
printf("node deleted\n");
if (head == NULL) {
printf("List is empty.\n");
return;
do {
if (temp->data == value) {
printf("Item found\n");
return;
temp = temp->next;
void show() {
if (head == NULL) {
return;
do {
printf("%d\n", temp->data);
temp = temp->next;
int main() {
do {
printf("\n*********Main Menu*********\n\n");
printf("===============================================\n\n");
printf("1.Insert in begining\n");
printf("2.Insert at last\n");
printf("7.Exit\n\n");
scanf("%d", &choice);
switch (choice) {
case 1:
scanf("%d", &value);
insertAtBeginning(value);
break;
case 2:
printf("Enter Data?\n\n");
scanf("%d", &value);
insertAtEnd(value);
break;
case 3:
deleteFromBeginning();
break;
case 4:
deleteFromEnd();
break;
case 5:
scanf("%d", &value);
search(value);
break;
case 6:
show();
break;
case 7:
exit(0);
break;
default:
printf("Invalid choice.\n");
return 0;
#include <stdlib.h>
struct Node {
int data;
};
newNode->data = data;
newNode->left = NULL;
newNode->right = NULL;
return newNode;
if (root == NULL) {
return root;
return current;
if (root == NULL)
return root;
} else {
if (root->left == NULL) {
free(root);
return temp;
free(root);
return temp;
root->data = temp->data;
}
return root;
if (node == NULL)
return;
inorderTraversal(node->left, count);
(*count)++;
printf("%d", node->data);
if (*count != 8) {
inorderTraversal(node->right, count);
int main() {
// Manually constructing the tree (you can replace this with user input)
int count = 0;
inorderTraversal(root, &count);
// Delete node 10
count = 0;
inorderTraversal(root, &count);
return 0;
}
BINARY TREE TRAVERSAL
#include <stdio.h>
#include <stdlib.h>
struct Node {
int data;
};
newNode->data = data;
newNode->left = NULL;
newNode->right = NULL;
return newNode;
// Function to insert node in the binary tree in a basic level-order manner (like a binary search tree)
if (root == NULL) {
} else {
return root;
if (node == NULL)
return;
preorderTraversal(node->left);
preorderTraversal(node->right);
if (node == NULL)
return;
inorderTraversal(node->left);
inorderTraversal(node->right);
if (node == NULL)
return;
postorderTraversal(node->left);
postorderTraversal(node->right);
int main() {
char choice;
do {
int data;
scanf("%d", &data);
preorderTraversal(root);
printf("\n");
printf("\n");
postorderTraversal(root);
printf("\n");
return 0;