Ds File Code Sem3
Ds File Code Sem3
#include <stdio.h>
int main()
{
int i, j, m, n, p, q;
printf("Enter row and column for 1st matrix: ");
scanf("%d%d", &m, &n);
printf("Enter the array:");
int arr1[m][n];
for (int i = 0; i < m; i++)
{
for (int j = 0; j < n; j++)
{
scanf("%d", &arr1[i][j]);
}
}
printf("Enter row and column for 2nd matrix: ");
scanf("%d%d", &p, &q);
printf("Enter the array:");
int arr2[p][q];
for (i = 0; i < p; i++)
{
for (j = 0; j < q; j++)
{
scanf("%d", &arr2[i][j]);
}
}
if (m != p && n != q)
{
printf("Addition can not perform...");
return 0;
}
printf("Addition of two matrix:\n");
return 0;
}
Output:-
#include <stdio.h>
int main()
{
int i, j, m, n, p, q;
printf("Enter row and column for 1st matrix: ");
scanf("%d%d", &m, &n);
printf("Enter the array:");
int arr1[m][n];
for (int i = 0; i < m; i++)
{
for (int j = 0; j < n; j++)
{
scanf("%d", &arr1[i][j]);
}
}
printf("Enter row and column for 2nd matrix: ");
scanf("%d%d", &p, &q);
printf("Enter the array:");
int arr2[p][q];
for (i = 0; i < p; i++)
{
for (j = 0; j < q; j++)
{
scanf("%d", &arr2[i][j]);
}
}
if (m != p && n != q)
{
printf("Subtraction can not perform...");
return 0;
}
printf("Subtraction of two matrix:\n");
return 0;
}
Output:-
#include <stdio.h>
int main()
{
int i, j,k, m, n, p, q;
printf("Enter row and column for 1st matrix: ");
scanf("%d%d", &m, &n);
printf("Enter the array:");
int arr1[m][n];
for (int i = 0; i < m; i++)
{
for (int j = 0; j < n; j++)
{
scanf("%d", &arr1[i][j]);
}
}
printf("Enter row and column for 2nd matrix: ");
scanf("%d%d", &p, &q);
printf("Enter the array:");
int arr2[p][q];
for (i = 0; i < p; i++)
{
for (j = 0; j < q; j++)
{
scanf("%d", &arr2[i][j]);
}
}
printf("1st matrix:\n");
for (int i = 0; i < m; i++)
{
for (int j = 0; j < n; j++)
{
printf("%d ",arr1[i][j]);
}
printf("\n");
}
printf("\n2nd matrix:\n");
for (int i = 0; i < m; i++)
{
for (int j = 0; j < n; j++)
{
printf("%d ",arr2[i][j]);
}
printf("\n");
}
if (m != p && n != q)
{
printf("Multiplication can not perform...");
return 0;
}
int res[m][n];
printf("Multiplication of two matrix:\n");
for(i=0; i<m; i++)
{
for(j=0; j<n; j++)
{
res[i][j]=0;
for(k=0; k<m; k++)
{
res[i][j]=res[i][j]+arr1[i][k]*arr2[k][j];
}
}
}
for (int i = 0; i < m; i++)
{
for (int j = 0; j < n; j++)
{
printf("%d ",res[i][j]);
}
printf("\n");
}
return 0;
}
Output:-
2nd matrix:
123
456
789
Multiplication of two matrix:
30 36 42
66 81 96
102 126 150
#include <stdio.h>
int main()
{
int i, j, m, n;
printf("Enter row and column for matrix: ");
scanf("%d%d", &m, &n);
printf("Enter the array:");
int arr1[m][n];
for (int i = 0; i < m; i++)
{
for (int j = 0; j < n; j++)
{
scanf("%d", &arr1[i][j]);
}
}
int trans[n][m];
printf("Matrix:\n");
for (int i = 0; i < m; i++)
{
for (int j = 0; j < n; j++)
{
printf("%d ",arr1[i][j]);
}
printf("\n");
}
for (int i = 0; i < m; i++)
{
for (int j = 0; j < n; j++)
{
trans[j][i]=arr1[i][j];
}
}
printf("Transpose of matrix:\n");
for (int i = 0; i < n; i++)
{
for (int j = 0; j < m; j++)
{
printf("%d ",trans[i][j]);
}
printf("\n");
}
return 0;
}
Output:-
#include <stdio.h>
int main()
{
int i, j, m, n;
int flag=0;
printf("Enter row and column for matrix: ");
scanf("%d%d", &m, &n);
printf("Enter the array:");
int arr1[m][n];
for (int i = 0; i < m; i++)
{
for (int j = 0; j < n; j++)
{
scanf("%d", &arr1[i][j]);
}
}
printf("Matrix:\n");
for (int i = 0; i < m; i++)
{
for (int j = 0; j < n; j++)
{ if(arr1[i][j]==0)
flag++;
printf("%d ",arr1[i][j]);
}
printf("\n");
}
int size=m*n;
if(flag>size/2)
{
printf("The given matrix is sparse matrix..");
}
else
{
printf("The given matrix is not sparse matrix..");
}
return 0;
}
Output:-
#include <stdio.h>
int main()
{
int i, j, m, n;
return 0;
}
Output:-
#include <stdio.h>
#include <stdlib.h>
int main() {
int m, n, value;
printf("Enter row and column for matrix: ");
scanf("%d%d", &m, &n);
int arr1[m][n];
printf("Enter the array:");
for (int i = 0; i < m; i++) {
for (int j = 0; j < n; j++) {
scanf("%d", &arr1[i][j]);
}
}
printf("Matrix:\n");
for (int i = 0; i < m; i++) {
for (int j = 0; j < n; j++) {
printf("%d ", arr1[i][j]);
}
printf("\n");
}
printf("Triplet representation:\n");
display(head);
return 0;
}
Output:-
Enter row and column for matrix: 3 3
Enter the array:1 0 0 3 0 0 0 7 0
Matrix:
100
300
070
Triplet representation:
Row Col Value
0 0 1
1 0 3
2 1 7
2) Write a program to add two polynomials of single variable using linked list
#include<stdio.h>
#include<stdlib.h>
struct node
{
int coef,exp;
struct node *link;
} *newnode,*temp;
void insert(struct node **p,int c,int e)
{
newnode=(struct node*)malloc (sizeof(struct node));
newnode->exp=e;
newnode->coef=c;
newnode->link =NULL;
if(*p==NULL)
*p=newnode;
else
{
temp=*p;
while (temp->link!=NULL)
{
temp=temp->link;
}
temp->link=newnode;
}
}
void traverse(struct node*p)
{
printf("\n");
temp=p;
while (temp!=NULL)
{
if (temp->link==NULL)
printf ("%dx^%d",temp->coef,temp->exp);
else {
printf ("%dx^%d+",temp->coef,temp->exp);
}
temp=temp->link;
}
}
struct node* add(struct node *p1,struct node *p2)
{
Output:-
2x^3+5x^2+3x^1+4x^0
3x^2+2x^1+3x^0
Addition of two given polynomials :
2x^3+8x^2+5x^1+7x^0
#include<stdio.h>
#include<stdlib.h>
struct node
{
int coef,exp;
struct node *link;
} *newnode,*temp;
void insert(struct node **p,int c,int e)
{
newnode=(struct node*)malloc (sizeof(struct node));
newnode->exp=e;
newnode->coef=c;
newnode->link =NULL;
if(*p==NULL)
*p=newnode;
else
{
temp=*p;
while (temp->link!=NULL)
{
temp=temp->link;
}
temp->link=newnode;
}
}
void traverse(struct node*p)
{
printf("\n");
temp=p;
while (temp!=NULL)
{
if (temp->link==NULL)
printf ("%dx^%d",temp->coef,temp->exp);
else {
printf ("%dx^%d+",temp->coef,temp->exp);
}
temp=temp->link;
}
}
struct node* add(struct node *p1,struct node *p2)
{
Output:-
7x^3+5x^2+3x^1+4x^0
3x^2+2x^1+3x^0
Subtraction of two given polynomials :
7x^3+2x^2+1x^1+1x^0
#include<stdio.h>
#define size 10
int arr[size];
int n;
void insertbeg(int num)
{ int i;
if(n==size)
{
printf("\n Overflow\n");
return;
}
for(i=n;i>=0;i--)
{
arr[i]=arr[i-1];
}
arr[0]=num;
n++;
}
void insertlast(int num)
{
if(n==size)
{
printf("\n Overflow\n");
return;
}
int i;
arr[n]=num;
n++;
}
void inserAtposition(int num,int pos)
{ int i;
if(n==size)
{
printf("\n Overflow\n");
return;
}
for(i=n;i>=pos;i--)
{
arr[i]=arr[i-1];
}
arr[pos-1]=num;
n++;
}
void print()
{ int i;
for(i=0;i<n;i++)
{
printf("%d ",arr[i]);
}
printf("\n");
}
void deletebeg()
{ int i;
for(i=0;i<n;i++)
{
arr[i]=arr[i+1];
}
arr[n-1]=' ';
n--;
}
void deleteAtposition(int pos)
{ int i;
for(i=pos-1;i<n;i++)
{
arr[i]=arr[i+1];
}
arr[n-1]=' ';
n--;
}
void deletelast()
{
arr[n-1]=' ';
n--;
}
int main()
{ n=0;
int ch,num,p;
while(1)
{
printf("\n Enter 1 for insertAtbeg...");
printf("\n Enter 2 for insertAtlast...");
printf("\n Enter 3 for insertAtposition...");
printf("\n Enter 4 for deleteAtbeg...");
printf("\n Enter 5 for deleteAtlast...");
printf("\n Enter 6 for deletetAtposition...");
printf("\n Enter 7 for print...");
printf("\n Enter 8 for exit...\n");
scanf("%d",&ch);
switch (ch)
{
case 1:
printf("Enter number: ");
scanf("%d",&num);
insertbeg(num);
break;
case 2:
printf("Enter number: ");
scanf("%d",&num);
insertlast(num);
break;
case 3:
printf("Enter number and position: ");
scanf("%d%d",&num,&p);
inserAtposition(num,p);
break;
case 4:
deletebeg();
break;
case 5:
deletelast();
break;
case 6:
printf("Enter position: ");
scanf("%d",&p);
deleteAtposition(p);
break;
case 7:
print();
break;
default:
printf("Unvalid Choice \n");
break;
}
}
}
Output:-
#include<stdio.h>
#include<stdlib.h>
struct node
{
int data;
struct node *link;
}*head=NULL,*newnode,*temp;
void insertbeg(int num)
{
newnode=(struct node*)malloc(sizeof(struct node));
newnode->data=num;
newnode->link=NULL;
if(head==NULL)
head=newnode;
else
{
newnode->link=head;
head=newnode;
}
}
void insertlast(int num)
{
newnode=(struct node*)malloc(sizeof(struct node));
newnode->data=num;
newnode->link=NULL;
if(head==NULL)
head=newnode;
else
{ temp=head;
while(temp->link!=NULL)
{
temp=temp->link;
}
temp->link=newnode;
}
}
temp=temp->link;
}
if(found==0)
{
printf("\n Source is not found");
}
else
{
if(temp->link->link==NULL)
{
struct node *r=temp->link;
temp->link=NULL;
free(r);
}
else
{
struct node *r=temp->link;
temp->link=temp->link->link;
free(r);
}
}
}
}
void deleteatlast()
{
if(head==NULL)
{
printf("\n List is empty");
return;
}
if(head->link==NULL)
{
temp=head;
head=head->link;
printf("\n Data to be deleted = %d",temp->data);
free(temp);
}
else
{
temp=head;
while(temp->link->link!=NULL)
{
temp=temp->link;
}
struct node *r=temp->link;
temp->link=NULL;
printf("\n Data to be deleted = %d",r->data);
free(r);
}
}
void deleteatbig()
{
if(head==NULL)
{
printf("\n List is empty");
}
else
{
temp=head;
head=head->link;
printf("\n Data to be deleted = %d",temp->data);
free(temp);
}
}
void insertAtKthPosition(int value, int k) {
void print()
{
temp=head;
while(temp!=NULL)
{
printf("%d -> ",temp->data);
temp=temp->link;
}
printf("NULL");
}
int main(){
int ch,num,c,source,value,k;
while(1)
{
printf("\nEnter 1 for insert beg");
printf("\nEnter 2 for insert last");
printf("\nEnter 3 for insert at k position");
printf("\nEnter 4 for delete at beg");
printf("\nEnter 5 for delete at last");
printf("\nEnter 6 for delete specific");
printf("\nEnter 7 for print\n");
scanf("%d",&ch);
switch (ch)
{
case 1:
printf("Enter the number:");
scanf("%d",&num);
insertbeg(num);
break;
case 2:
printf("Enter the number:");
scanf("%d",&num);
insertlast(num);
break;
case 3:
printf("Enter the number and position:");
scanf("%d%d",&num,&k);
insertAtKthPosition(num,k);
break;
case 4:
deleteatbig();
break;
case 5:
deleteatlast();
break;
case 6:
printf("Enter source number:");
scanf("%d",&source);
deletespecific(source);
break;
case 7:
print();
break;
default:
exit(0);
break;
}
return 0;
}
Output:-
Data to be deleted = 10
Enter 1 for insert beg
Enter 2 for insert last
Enter 3 for insert at k position
Enter 4 for delete at beg
Enter 5 for delete at last
Enter 6 for delete specific
Enter 7 for print
5
Data to be deleted = 50
Enter 1 for insert beg
Enter 2 for insert last
Enter 3 for insert at k position
Enter 4 for delete at beg
Enter 5 for delete at last
Enter 6 for delete specific
Enter 7 for print
7
20 -> 30 -> 35 -> 40 -> NULL
Enter 1 for insert beg
Enter 2 for insert last
Enter 3 for insert at k position
Enter 4 for delete at beg
Enter 5 for delete at last
Enter 6 for delete specific
Enter 7 for print
6
Enter source number:35
#include<stdio.h>
#include<stdlib.h>
struct node
{
int data;
struct node *prev;
struct node *next;
}*head=NULL,*newnode,*temp;
void deleteatlast()
{
if (head == NULL)
{
printf("\nList is empty");
return;
}
temp = head;
while (temp->next != NULL)
temp = temp->next;
if (temp->prev != NULL)
temp->prev->next = NULL;
else
head = NULL;
printf("\nData to be deleted = %d", temp->data);
free(temp);
}
void deleteatbig()
{
if (head == NULL)
{
printf("\nList is empty");
return;
}
temp = head;
head = head->next;
if (head != NULL)
head->prev = NULL;
printf("\nData to be deleted = %d", temp->data);
free(temp);
}
void print()
{
temp = head;
while (temp != NULL)
{
printf("%d <-> ", temp->data);
temp = temp->next;
}
printf("NULL\n");
}
int main()
{
int ch, num, source, value, k;
while (1)
{
printf("\nEnter 1 for insert beg");
printf("\nEnter 2 for insert last");
printf("\nEnter 3 for insert at k position");
printf("\nEnter 4 for delete at beg");
printf("\nEnter 5 for delete at last");
printf("\nEnter 6 for delete specific");
printf("\nEnter 7 for print\n");
scanf("%d", &ch);
switch (ch)
{
case 1:
printf("Enter the number: ");
scanf("%d", &num);
insertbeg(num);
break;
case 2:
printf("Enter the number: ");
scanf("%d", &num);
insertlast(num);
break;
case 3:
printf("Enter the number and position: ");
scanf("%d%d", &num, &k);
insertAtKthPosition(num, k);
break;
case 4:
deleteatbig();
break;
case 5:
deleteatlast();
break;
case 6:
printf("Enter source number: ");
scanf("%d", &source);
deletespecific(source);
break;
case 7:
print();
break;
default:
exit(0);
}
}
return 0;
}
Output:-
Data to be deleted = 10
Enter 1 for insert beg
Enter 2 for insert last
Enter 3 for insert at k position
Enter 4 for delete at beg
Enter 5 for delete at last
Enter 6 for delete specific
Enter 7 for print
5
Data to be deleted = 50
Enter 1 for insert beg
Enter 2 for insert last
Enter 3 for insert at k position
Enter 4 for delete at beg
Enter 5 for delete at last
Enter 6 for delete specific
Enter 7 for print
7
20 <-> 30 <-> 35 <-> 40 <-> NULL
#include<stdio.h>
#include<stdlib.h>
struct node {
int data;
struct node *link;
} *last = NULL, *newnode, *temp;
temp = last->link;
int count = 1;
while(count < k-1 && temp != last) {
temp = temp->link;
count++;
}
if(count == k-1) {
newnode->link = temp->link;
temp->link = newnode;
if(temp == last) {
last = newnode;
}
printf("Node inserted at position %d\n", k);
} else {
printf("Position %d out of bounds.\n", k);
free(newnode);
}
}
void deleteatbeg() {
if(last == NULL) {
printf("\nList is empty.\n");
return;
}
if(last->link == last) {
temp = last->link;
last = NULL;
printf("\nData to be deleted = %d\n", temp->data);
free(temp);
} else {
temp = last->link;
last->link = temp->link;
printf("\nData to be deleted = %d\n", temp->data);
free(temp);
}
}
void deleteatlast() {
if(last == NULL) {
printf("\nList is empty.\n");
return;
}
if(last->link == last) {
temp = last->link;
last = NULL;
printf("\nData to be deleted = %d\n", temp->data);
free(temp);
} else {
struct node *r;
temp = last->link;
while(temp != last) {
if(temp->link == last) {
break;
}
temp = temp->link;
}
printf("\nData to be deleted = %d\n", temp->link->data);
r = last;
temp->link = last->link;
last = temp;
free(r);
}
}
do {
if(temp->data == num) {
if(prev == NULL) {
deleteatbeg();
} else {
prev->link = temp->link;
if(temp == last) {
last = prev;
}
printf("\nData to be deleted = %d\n", temp->data);
free(temp);
}
return;
}
prev = temp;
temp = temp->link;
} while(temp != last->link);
void print() {
if(last == NULL) {
printf("\nList is empty.\n");
return;
}
temp = last->link;
do {
printf("%d\t", temp->data);
temp = temp->link;
} while(temp != last->link);
printf("\n");
}
int main() {
int choice, num, k;
while(1) {
printf("\nMenu: \n");
printf("1. Insert at beginning\n");
printf("2. Insert at last\n");
printf("3. Insert at Kth position\n");
printf("4. Delete at beginning\n");
printf("5. Delete at last\n");
printf("6. Delete specific element\n");
printf("7. print the list\n");
printf("8. Exit\n");
printf("Enter your choice: ");
scanf("%d", &choice);
switch(choice) {
case 1:
printf("Enter the number: ");
scanf("%d", &num);
insertbeg(num);
break;
case 2:
printf("Enter the number: ");
scanf("%d", &num);
insertatlast(num);
break;
case 3:
printf("Enter the number and position: ");
scanf("%d%d", &num, &k);
insertatkthposition(num, k);
break;
case 4:
deleteatbeg();
break;
case 5:
deleteatlast();
break;
case 6:
printf("Enter the number to delete: ");
scanf("%d", &num);
deleteSpecific(num);
break;
case 7:
print();
break;
case 8:
exit(0);
default:
printf("Invalid choice, please try again.\n");
}
}
return 0;
}
Output:-
Menu:
1. Insert at beginning
2. Insert at last
3. Insert at Kth position
4. Delete at beginning
5. Delete at last
6. Delete specific element
7. print the list
8. Exit
Enter your choice: 1
Enter the number: 30
Menu:
1. Insert at beginning
2. Insert at last
3. Insert at Kth position
4. Delete at beginning
5. Delete at last
6. Delete specific element
7. print the list
8. Exit
Enter your choice: 1
Enter the number: 20
Menu:
1. Insert at beginning
2. Insert at last
3. Insert at Kth position
4. Delete at beginning
5. Delete at last
6. Delete specific element
7. print the list
8. Exit
Enter your choice: 1
Enter the number: 10
Menu:
1. Insert at beginning
2. Insert at last
3. Insert at Kth position
4. Delete at beginning
5. Delete at last
6. Delete specific element
7. print the list
8. Exit
Enter your choice: 7
10 20 30
Menu:
1. Insert at beginning
2. Insert at last
3. Insert at Kth position
4. Delete at beginning
5. Delete at last
6. Delete specific element
7. print the list
8. Exit
Enter your choice: 2
Enter the number: 40
Menu:
1. Insert at beginning
2. Insert at last
3. Insert at Kth position
4. Delete at beginning
5. Delete at last
6. Delete specific element
7. print the list
8. Exit
Enter your choice: 7
10 20 30 40
Menu:
1. Insert at beginning
2. Insert at last
3. Insert at Kth position
4. Delete at beginning
5. Delete at last
6. Delete specific element
7. print the list
8. Exit
Enter your choice: 3
Enter the number and position: 35 4
Node inserted at position 4
Menu:
1. Insert at beginning
2. Insert at last
3. Insert at Kth position
4. Delete at beginning
5. Delete at last
6. Delete specific element
7. print the list
8. Exit
Enter your choice: 7
10 20 30 35 40
Menu:
1. Insert at beginning
2. Insert at last
3. Insert at Kth position
4. Delete at beginning
5. Delete at last
6. Delete specific element
7. print the list
8. Exit
Enter your choice: 4
Data to be deleted = 10
Menu:
1. Insert at beginning
2. Insert at last
3. Insert at Kth position
4. Delete at beginning
5. Delete at last
6. Delete specific element
7. print the list
8. Exit
Enter your choice: 5
Data to be deleted = 40
Menu:
1. Insert at beginning
2. Insert at last
3. Insert at Kth position
4. Delete at beginning
5. Delete at last
6. Delete specific element
7. print the list
8. Exit
Enter your choice: 7
20 30 35
Menu:
1. Insert at beginning
2. Insert at last
3. Insert at Kth position
4. Delete at beginning
5. Delete at last
6. Delete specific element
7. print the list
8. Exit
Enter your choice: 6
Enter the number to delete: 30
Data to be deleted = 30
Menu:
1. Insert at beginning
2. Insert at last
3. Insert at Kth position
4. Delete at beginning
5. Delete at last
6. Delete specific element
7. print the list
8. Exit
Enter your choice: 7
20 35
Menu:
1. Insert at beginning
2. Insert at last
3. Insert at Kth position
4. Delete at beginning
5. Delete at last
6. Delete specific element
7. print the list
8. Exit
Enter your choice: 8
exit.........................................
8) Write a choice based program to perform following operations in Doubly
Circular Linked List
#include<stdio.h>
#include<stdlib.h>
struct node {
int data;
struct node *next;
struct node *prev;
} *last = NULL, *newnode, *temp;
temp = last->next;
int count = 1;
while(count < k-1 && temp != last) {
temp = temp->next;
count++;
}
if(count == k-1) {
newnode->next = temp->next;
newnode->prev = temp;
temp->next->prev = newnode;
temp->next = newnode;
if(temp == last) {
last = newnode;
}
printf("Node inserted at position %d\n", k);
} else {
printf("Position %d out of bounds.\n", k);
free(newnode);
}
}
void deleteatbeg() {
if(last == NULL) {
printf("\nList is empty.\n");
return;
}
if(last->next == last) {
temp = last;
last = NULL;
printf("\nData to be deleted = %d\n", temp->data);
free(temp);
} else {
temp = last->next;
last->next = temp->next;
temp->next->prev = last;
printf("\nData to be deleted = %d\n", temp->data);
free(temp);
}
}
void deleteatlast() {
if(last == NULL) {
printf("\nList is empty.\n");
return;
}
if(last->next == last) {
temp = last;
last = NULL;
printf("\nData to be deleted = %d\n", temp->data);
free(temp);
} else {
temp = last;
last = last->prev;
last->next = temp->next;
temp->next->prev = last;
printf("\nData to be deleted = %d\n", temp->data);
free(temp);
}
}
do {
if(temp->data == num) {
if(prev == NULL) {
deleteatbeg();
} else {
prev->next = temp->next;
temp->next->prev = prev;
if(temp == last) {
last = prev;
}
printf("\nData to be deleted = %d\n", temp->data);
free(temp);
}
return;
}
prev = temp;
temp = temp->next;
} while(temp != last->next);
printf("Element %d not found in the list.\n", num);
}
void print() {
if(last == NULL) {
printf("\nList is empty.\n");
return;
}
temp = last->next;
do {
printf("%d\t", temp->data);
temp = temp->next;
} while(temp != last->next);
printf("\n");
}
int main() {
int choice, num, k;
while(1) {
printf("\nMenu: \n");
printf("1. Insert at beginning\n");
printf("2. Insert at last\n");
printf("3. Insert at Kth position\n");
printf("4. Delete at beginning\n");
printf("5. Delete at last\n");
printf("6. Delete specific element\n");
printf("7. Print the list\n");
printf("8. Exit\n");
printf("Enter your choice: ");
scanf("%d", &choice);
switch(choice) {
case 1:
printf("Enter the number: ");
scanf("%d", &num);
insertbeg(num);
break;
case 2:
printf("Enter the number: ");
scanf("%d", &num);
insertatlast(num);
break;
case 3:
printf("Enter the number and position: ");
scanf("%d%d", &num, &k);
insertatkthposition(num, k);
break;
case 4:
deleteatbeg();
break;
case 5:
deleteatlast();
break;
case 6:
printf("Enter the number to delete: ");
scanf("%d", &num);
deleteSpecific(num);
break;
case 7:
print();
break;
case 8:
exit(0);
default:
printf("Invalid choice, please try again.\n");
}
}
return 0;
}
Output:-
Menu:
1. Insert at beginning
2. Insert at last
3. Insert at Kth position
4. Delete at beginning
5. Delete at last
6. Delete specific element
7. Print the list
8. Exit
Enter your choice: 1
Enter the number: 30
Menu:
1. Insert at beginning
2. Insert at last
3. Insert at Kth position
4. Delete at beginning
5. Delete at last
6. Delete specific element
7. Print the list
8. Exit
Enter your choice: 1
Enter the number: 20
Menu:
1. Insert at beginning
2. Insert at last
3. Insert at Kth position
4. Delete at beginning
5. Delete at last
6. Delete specific element
7. Print the list
8. Exit
Enter your choice: 1
Enter the number: 10
Menu:
1. Insert at beginning
2. Insert at last
3. Insert at Kth position
4. Delete at beginning
5. Delete at last
6. Delete specific element
7. Print the list
8. Exit
Enter your choice: 7
10 20 30
Menu:
1. Insert at beginning
2. Insert at last
3. Insert at Kth position
4. Delete at beginning
5. Delete at last
6. Delete specific element
7. Print the list
8. Exit
Enter your choice: 2
Enter the number: 40
Menu:
1. Insert at beginning
2. Insert at last
3. Insert at Kth position
4. Delete at beginning
5. Delete at last
6. Delete specific element
7. Print the list
8. Exit
Enter your choice: 7
10 20 30 40
Menu:
1. Insert at beginning
2. Insert at last
3. Insert at Kth position
4. Delete at beginning
5. Delete at last
6. Delete specific element
7. Print the list
8. Exit
Enter your choice: 3
Enter the number and position: 35 4
Node inserted at position 4
Menu:
1. Insert at beginning
2. Insert at last
3. Insert at Kth position
4. Delete at beginning
5. Delete at last
6. Delete specific element
7. Print the list
8. Exit
Enter your choice: 7
10 20 30 35 40
Menu:
1. Insert at beginning
2. Insert at last
3. Insert at Kth position
4. Delete at beginning
5. Delete at last
6. Delete specific element
7. Print the list
8. Exit
Enter your choice: 4
Data to be deleted = 10
Menu:
1. Insert at beginning
2. Insert at last
3. Insert at Kth position
4. Delete at beginning
5. Delete at last
6. Delete specific element
7. Print the list
8. Exit
Enter your choice: 5
Data to be deleted = 40
Menu:
1. Insert at beginning
2. Insert at last
3. Insert at Kth position
4. Delete at beginning
5. Delete at last
6. Delete specific element
7. Print the list
8. Exit
Enter your choice: 7
20 30 35
Menu:
1. Insert at beginning
2. Insert at last
3. Insert at Kth position
4. Delete at beginning
5. Delete at last
6. Delete specific element
7. Print the list
8. Exit
Enter your choice: 6
Enter the number to delete: 35
Data to be deleted = 35
Menu:
1. Insert at beginning
2. Insert at last
3. Insert at Kth position
4. Delete at beginning
5. Delete at last
6. Delete specific element
7. Print the list
8. Exit
Enter your choice: 7
20 30
Menu:
1. Insert at beginning
2. Insert at last
3. Insert at Kth position
4. Delete at beginning
5. Delete at last
6. Delete specific element
7. Print the list
8. Exit
Enter your choice: 8
exit......................................
9) Write a choice based program to perform following operations on STACK
#include<stdio.h>
#include<stdlib.h>
#define size 5
int stack[size];
int top=-1;
void push(int num)
{
if(top==size-1)
{
printf("\nOverflow ");
}
else
{
top=top+1;
stack[top]=num;
}
}
int pop()
{
if(top==-1)
{
printf("\nUnderflow");
return -1;
}
else
{
int num=stack[top];
top=top-1;
return num;
}
}
int peek()
{
if(top==-1)
{
printf("\nUnderflow");
}
if(top==size-1)
{
printf("\nOverflow ");
}
return stack[top];
}
void display()
{
int i;
for(i=0;i<=top;i++)
{
printf("%d ",stack[i]);
}
printf("\n");
}
int main()
{
int ch,num;
while(1)
{
printf("\nEnter 1 for Push operation...");
printf("\nEnter 2 for pop operation...");
printf("\nEnter 3 for Peek operation...");
printf("\nEnter 4 for display operation...");
printf("\nEnter 5 for exit operation...\n");
scanf("%d",&ch);
switch (ch)
{
case 1:
printf("Enter the number: ");
scanf("%d",&num);
push(num);
break;
case 2:
printf("\npoped element = %d\n",pop());
break;
case 3:
printf("\nTop element = %d\n",peek());
break;
case 4:
display();
break;
case 5:
exit(0);
break;
default:
printf("\nUnvalid choice");
break;
}
}
return 0;
}
Output:-
Top element = 30
poped element = 30
Enter 1 for Push operation...
Enter 2 for pop operation...
Enter 3 for Peek operation...
Enter 4 for display operation...
Enter 5 for exit operation...
2
poped element = 20
a) Enqueue b) Dequeue
#include<stdio.h>
#define size 5
int queue[size];
int front=-1,rear=-1;
void insertopr(int n)
{
if(rear==size-1)
{
printf("Overflow\n");
return;
}
if(front==-1)
{
front=0;
}
rear=rear+1;
queue[rear]=n;
}
void deleteopr()
{
if(front==-1||front==rear+1)
{
printf("Underflow\n");
}
printf("Deleted data = %d\n",queue[front]);
front=front+1;
}
void traverse()
{
for(int i=front;i<=rear;i++)
{
printf("%d ",queue[i]);
}
printf("\n");
}
int main()
{
int c,num;
while(1)
{
printf("Enter 1 for Insert operation...\n");
printf("Enter 2 for Delete operation...\n");
printf("Enter 3 for Traverse operation...\n");
scanf("%d",&c);
switch (c)
{
case 1:
printf("Enter number : ");
scanf("%d",&num);
insertopr(num);
break;
case 2:
deleteopr();
break;
case 3:
traverse();
break;
default:
printf("Unvalid Choice\n");
break;
}
}
return 0;
}
Output:-
a) Enqueue b) Dequeue
#include<stdio.h>
#include<stdlib.h>
#define size 5
int cqueue[size];
int front=-1,rear=-1;
void insertopr(int num)
{
if((front==0 && rear==size-1)||(front==rear+1))
{
printf("\n Overflow");
return;
}
if(front==-1)
{
front=rear=0;
}
else
{
if(rear==size-1)
rear=0;
else
rear=rear+1;
}
cqueue[rear]=num;
}
void deleteopr()
{
if(front==-1)
{
printf("\n Underflow");
return;
}
int del=cqueue[front];
cqueue[front]=' ';
if(front==rear)
{
front=rear=-1;
}
else
{
if(front==size-1)
front=0;
else
front=front+1;
}
printf("\n Deleted data = %d\n",del);
}
void traverse()
{
if(front==-1)
{
printf("\n Underflow");
return;
}
if(rear>=front)
{
for(int i=front;i<=rear;i++)
{
printf("%d ",cqueue[i]);
}
}
if(rear<front)
{
for(int i=front;i<=size-1;i++)
{
printf("%d ",cqueue[i]);
}
for(int i=0;i<=rear;i++)
{
printf("%d ",cqueue[i]);
}
}
}
int main()
{
int c,num;
while(1)
{
printf("\nEnter 1 for Insert operation...\n");
printf("Enter 2 for Delete operation...\n");
printf("Enter 3 for Traverse operation...\n");
printf("Enter 4 for exit...\n");
scanf("%d",&c);
switch (c)
{
case 1:
printf("Enter number : ");
scanf("%d",&num);
insertopr(num);
break;
case 2:
deleteopr();
break;
case 3:
traverse();
break;
case 4:
exit(0);
break;
default:
printf("Unvalid Choice\n");
break;
}
}
return 0;
}
Output:-
Deleted data = 10
#include<stdio.h>
int main()
{ int a[100],i,n,search,flag=0;
printf("Enter the size of the set\n");
scanf("%d",&n);
printf("Enter the set of numbers\n");
for(i=0;i<n;i++)
scanf("%d",&a[i]);
printf("Enter the number to be searched\n");
scanf("%d",&search);
for(i=0;i<n;i++)
{
if(search==a[i])
{
printf("%d is found at location %d",search,i+1);
flag++;
break;
}
}
if(flag!=1)
printf("%d is not found in given set",search);
return 0;
}
Output:-
#include<stdio.h>
int
main ()
{
int i, a[50], search, first, last, mid, n;
printf ("Enter the number of elements:\n");
scanf ("%d", &n);
printf ("Enter the elements:");
for (i = 0; i < n; i++)
scanf ("%d", &a[i]);
printf ("\n Enter element to be search:");
scanf ("%d", &search);
first = 0;
last = n - 1;
mid = (first + last) / 2;
while (first <= last)
{
if (a[mid] < search)
{
first = mid + 1;
mid = (first + last) / 2;
}
else if (a[mid] == search)
{
printf ("\n The number ,%d foundat position %d", search, mid + 1);
break;
}
else
{
last = mid - 1;
mid = (first + last) / 2;
}
}
if (first > last)
printf ("\n The search is unsuccessful");
return 0;
}
Output:-
#include<stdio.h>
#define size 12
int indexseqential(int arr[],int n,int num)
{
if(num<arr[0]||num>arr[n-1])
return -1;
int i,j,indx=0;
int valarr[n];
int indexarr[n];
for(i=0;i<n;i=i+3)
{
valarr[indx]=arr[i];
indexarr[indx]=i;
indx++;
}
int s,e;
int maybe=0;
for(i=1;i<n;i++)
{
if(num<=valarr[i])
{
s=indexarr[i-1];
e=indexarr[i];
maybe=1;
break;
}
}
if(maybe==0)
{
s=indexarr[i-1];
e=n-1;
}
for(i=s;i<=e;i++)
{
if(num==arr[i])
return i;
}
return -1;
}
int main ()
{
int arr[size]={10,20,30,40,50,60,70,80,90,100,110,120};
int num =100;
int index=indexseqential(arr,size,num);
if (index!=-1)
printf ("\n Number found at %d position ",index+1);
else
printf ("\n Number not found");
return 0;
Output:-
#include<stdio.h>
void bubble(int arr[], int n)
{
int i,j,temp;
for (i=0;i<n;i++)
{
for (j=0;j<n-i-1;j++)
{
if (arr[j]>arr[j+1])
{
temp= arr[j];
arr[j]=arr[j+1];
arr[j+1]=temp; }
}
}
}
void print(int arr[],int n)
{
int i;
for (i=0;i<n;i++)
{
printf ("%d ",arr[i]);
}
}
int main()
{
int size,i,flag=0;
printf("\n Enter the size of array :");
scanf("%d",&size);
int arr[size];
printf("\n Enter the number :");
for(i=0;i<size;i++)
{
scanf("%d",&arr[i]);
}
printf("\nBefore sorting : ");
print(arr,size);
printf("\nAfter sorting : ");
bubble(arr,size);
print(arr,size);
return 0;
}
Output:-
Before sorting : 33 44 12 11 3 78
After sorting : 3 11 12 33 44 78
#include<stdio.h>
void print(int arr[],int n)
{ int i;
for(i=0;i<n;i++)
{
printf("%d ",arr[i]);
}
}
void selection(int arr[],int n)
{
int i,j,temp;
for(i=0;i<n;i++)
{
for(j=i+1;j<n;j++)
{
if(arr[i]>arr[j])
{
temp=arr[i];
arr[i]=arr[j];
arr[j]=temp;
}
}
}
}
int main()
{
int size,i;
printf("\n Enter the size of array :");
scanf("%d",&size);
int arr[size];
printf("\n Enter the number :");
for(i=0;i<size;i++)
{
scanf("%d",&arr[i]);
}
printf("\nBefore sorting : ");
print(arr,size);
printf("\nAfter sorting : ");
selection(arr,size);
print(arr,size);
return 0;
}
Output:-
Before sorting : 2 55 12 67 22 44
After sorting : 2 12 22 44 55 67
#include<stdio.h>
int getmax(int ip[],int m)
{
int mx=ip[0];
int i;
for(i=0;i<m;i++)
{
if(mx<ip[i])
mx=ip[i];
}
return mx;
}
void countsort(int ip[],int op[],int size)
{
int i;
int max=getmax(ip,size);
int count[max+1];
for(i=0;i<=max;i++)
{
count[i]=0;
}
for(i=0;i<size;i++)
{
count[ip[i]]++;
}
for(i=1;i<=max;i++)
{
count[i]=count[i]+count[i-1];
}
for(i=size-1;i>=0;i--)
{
int n=ip[i];
count[n]=count[n]-1;
op[count[n]]=n;
}
}
int main()
{
int n;
printf("Enter the size of array: ");
scanf("%d",&n);
int ip[n],op[n];
printf("Enter the element of array: ");
for(int i=0;i<n;i++)
{
scanf("%d",&ip[i]);
}
printf("\n Before sorting: ");
for(int i=0;i<n;i++)
{
printf("%d ",ip[i]);
}
countsort(ip,op,n);
printf("\n After sorting: ");
for(int i=0;i<n;i++)
{
printf("%d ",op[i]);
}
return 0;
}
Output:-
Before sorting: 2 3 1 4 2 5
After sorting: 1 2 2 3 4 5
18) Write a program to implement radix sort.
#include<stdio.h>
int getmax(int ip[],int m)
{
int mx=ip[0];
int i;
for(i=0;i<m;i++)
{
if(mx<ip[i])
mx=ip[i];
}
return mx;
}
void countsort(int ip[],int op[],int size,int exp)
{
int i,md=ip[0]/exp%10;
for(i=0;i<size;i++)
{
if(md<ip[i]/exp%10)
md=ip[i]/exp%10;
}
int count[md+1];
for(i=0;i<=md;i++)
{
count[i]=0;
}
for(i=0;i<size;i++)
{
count[ip[i]/exp%10]++;
}
for(i=1;i<=md;i++)
{
count[i]=count[i]+count[i-1];
}
for(i=size-1;i>=0;i--)
{
int n=ip[i]/exp%10;
count[n]=count[n]-1;
op[count[n]]=ip[i];
}
for(i=0;i<size;i++)
{
ip[i]=op[i];
}
}
void radixsort(int ip[],int op[],int s)
{
int m=getmax(ip,s);
int exp=1;
while(exp<=m)
{
countsort(ip,op,s,exp);
exp=exp*10;
}
}
int main()
{
int n;
printf("Enter the size of array: ");
scanf("%d",&n);
int ip[n],op[n];
printf("Enter the element of array: ");
for(int i=0;i<n;i++)
{
scanf("%d",&ip[i]);
}
printf("\n Before sorting: ");
for(int i=0;i<n;i++)
{
printf("%d ",ip[i]);
}
radixsort(ip,op,n);
printf("\n After sorting: ");
for(int i=0;i<n;i++)
{
printf("%d ",ip[i]);
}
return 0;
}
Output:-
Before sorting: 22 4 12 23 66
After sorting: 4 12 22 23 66
19) Write a program to implement heap sort.
#include <stdio.h>
if (largest != i) {
int temp = arr[i];
arr[i] = arr[largest];
arr[largest] = temp;
heapify(arr, n, largest);
}
}
heapify(arr, i, 0);
}
}
int main() {
int n;
printf("Enter the number of elements: ");
scanf("%d", &n);
int arr[n];
printf("Enter the elements: ");
for (int i = 0; i < n; i++)
scanf("%d", &arr[i]);
heapSort(arr, n);
return 0;
}
Output:-
#include<stdio.h>
#define size 10
void print(int arr[],int n)
{
int i;
for (i=0;i<n;i++)
{
printf ("%d ",arr[i]);
}
}
void swap(int *a,int *b)
{
int c;
c=*a;
*a=*b;
*b=c;
}
int partition(int arr[],int low,int high,int pivot)
{
int i,j;
i=low;
j=low;
while (i<=high)
{
if(arr[i]>pivot)
{
i++;
}
else
{
swap(&arr[i],&arr[j]);
i++;
j++;
}
}
return j-1;
}
void quicksort(int arr[],int low,int high)
{
if(low>=high)
return;
int pivot=partition(arr,low,high,arr[high]);
quicksort(arr,low,pivot-1);
quicksort(arr,pivot+1,high);
}
int main()
{
int i;
printf("\n The size of the array is :%d",size);
int arr[size];
printf("\n Enter the number :");
for(i=0;i<size;i++)
{
scanf("%d",&arr[i]);
}
printf("\nBefore sorting : ");
print(arr,size);
printf("\nAfter sorting : ");
quicksort(arr,0,size-1);
print(arr,size);
return 0;
}
Output:-
Before sorting : 12 44 5 66 77 12 23 45 98 15
After sorting : 5 12 12 15 23 44 45 66 77 98
21) Write a program to implement insertion sort
#include<stdio.h>
//Code of Insertion Sort
void insertionSort(int arr[],int s){
int i,j,temp;
for(i=1;i<s;i++){
temp=arr[i];
j=i;
while (j>0 && temp<arr[j-1])
{
arr[j]=arr[j-1];
j=j-1;
}
arr[j]=temp;
}
}
void print(int arr[],int n)
{
int i;
for (i=0;i<n;i++)
{
printf ("%d ",arr[i]);
}
}
int main()
{
int size,i,flag=0;
printf("\n Enter the size of array :");
scanf("%d",&size);
int arr[size];
printf("\n Enter the number :");
for(i=0;i<size;i++)
{
scanf("%d",&arr[i]);
}
printf("\nBefore sorting : ");
print(arr,size);
printf("\nAfter sorting : ");
insertionSort(arr,size);
print(arr,size);
return 0;
}
Output:-
Before sorting : 23 45 11 21 56 2
After sorting : 2 11 21 23 45 56
#include<stdio.h>
#define size 10
void print(int arr[],int n)
{
int i;
for (i=0;i<n;i++)
{
printf ("%d ",arr[i]);
}
}
void merge(int arr[],int low,int mid,int high)
{
int i,j,k=0;
i=low;
j=mid+1;
int temp[size];
while(i<=mid&&j<=high)
{
if(arr[i]<arr[j])
{
temp[k]=arr[i];
k++;
i++;
}
else
{
temp[k]=arr[j];
k++;
j++;
}
}
while(i<=mid)
{
temp[k]=arr[i];
k++;
i++;
}
while(j<=high)
{
temp[k]=arr[j];
k++;
j++;
}
for(i=high;i>=low;i--)
{
arr[i]=temp[--k];
}
}
void mergesort(int arr[],int low,int high)
{
if(low==high)
return;
int mid=(low+high)/2;
mergesort(arr,0,mid);
mergesort(arr,mid+1,high);
merge(arr,low,mid,high);
}
int main()
{
int i;
printf("\n The size of the array is :%d",size);
int arr[size];
printf("\n Enter the number :");
for(i=0;i<size;i++)
{
scanf("%d",&arr[i]);
}
printf("\nBefore sorting : ");
print(arr,size);
printf("\nAfter sorting : ");
mergesort(arr,0,size-1);
print(arr,size);
return 0;
}
Output:-
Before sorting : 34 12 34 11 22 33 44 56 98 19
After sorting : 11 12 19 22 33 34 34 44 56 98
23) Write a program to create a binary tree and then traverse using in order, pre
order post order traversing techniques.
#include <stdio.h>
#include <stdlib.h>
struct Node {
int data;
struct Node* left;
struct Node* right;
};
void inorderTraversal(struct Node* root) {
if (root == NULL)
return;
inorderTraversal(root->left);
printf("%d ", root->data);
inorderTraversal(root->right);
}
void preorderTraversal(struct Node* root) {
if (root == NULL)
return;
printf("%d ", root->data);
preorderTraversal(root->left);
preorderTraversal(root->right);
}
void postorderTraversal(struct Node* node) {
if (node == NULL)
return;
postorderTraversal(node->left);
postorderTraversal(node->right);
printf("%d ", node->data);
}
int main() {
struct Node* root = newNode(1);
root->left = newNode(2);
root->right = newNode(3);
root->right->left = newNode(6);
root->right->right = newNode(7);
root->left->left = newNode(4);
root->left->right = newNode(5);
root->right->left = newNode(6);
root->right->right = newNode(7);
printf("Preorder traversal: ");
preorderTraversal(root);
printf("\n");
printf("Inorder traversal: ");
inorderTraversal(root);
printf("\n");
printf("Postorder traversal: ");
postorderTraversal(root);
return 0;
}
Output:-
Preorder traversal: 1 2 4 5 3 6 7
Inorder traversal: 4 2 5 1 6 3 7
Postorder traversal: 4 5 2 6 7 3 1
24) Write a program to create BST and print all elements using in order
traversing technique. Create user defined function for each operation and call
then in main function.
#include <stdio.h>
#include <stdlib.h>
struct Node {
int data;
struct Node *left, *right;
};
int main() {
struct Node* root = NULL;
int n, data, i;
return 0;
}
Output:-
#include <stdio.h>
#include <stdlib.h>
int main() {
int n, edges, u, v, i, start;
return 0;
}
Output:-
BFS Traversal: 0 1 2 3 4
DFS Traversal: 0 1 3 4 2