0% found this document useful (0 votes)
27 views73 pages

Final Assignment It Radha

The document contains 14 questions and their solutions involving C programming concepts like arrays, matrices, linked lists, searching and sorting. Each question provides the source code for a program to perform a specific task like finding the largest of three numbers, calculating average of 5 students' marks, searching an element in an array, etc. The output of running each program is also displayed. The questions cover basic to intermediate level programming concepts and data structures.

Uploaded by

ypkzc67g5m
Copyright
© © All Rights Reserved
Available Formats
Download as DOCX, PDF, TXT or read online on Scribd
Download as docx, pdf, or txt
0% found this document useful (0 votes)
27 views73 pages

Final Assignment It Radha

The document contains 14 questions and their solutions involving C programming concepts like arrays, matrices, linked lists, searching and sorting. Each question provides the source code for a program to perform a specific task like finding the largest of three numbers, calculating average of 5 students' marks, searching an element in an array, etc. The output of running each program is also displayed. The questions cover basic to intermediate level programming concepts and data structures.

Uploaded by

ypkzc67g5m
Copyright
© © All Rights Reserved
Available Formats
Download as DOCX, PDF, TXT or read online on Scribd
Download as docx, pdf, or txt
Download as docx, pdf, or txt
You are on page 1/ 73

Q 1.

Write a program to find the largest among three


number-
Source code-
#include <stdio.h>
int main()
{
double n1, n2, n3;
printf("Enter three different numbers: ");
scanf("%lf %lf %lf", &n1, &n2, &n3);
// if n1 is greater than both n2 and n3, n1 is the largest
if (n1 >= n2 && n1 >= n3)
printf("%.2f is the largest number.", n1);
// if n2 is greater than both n1 and n3, n2 is the largest
if (n2 >= n1 && n2 >= n3)
printf("%.2f is the largest number.", n2);
// if n3 is greater than both n1 and n2, n3 is the largest
if (n3 >= n1 && n3 >= n2)
printf("%.2f is the largest number.", n3);
//getch();
return 0;
}

Output-
Q2.Write a program to find average of five student-
Source code-
#include<iostream.h>
#include<conio.h>
void main()
{
float a[4]; float sum,avg;
clrscr();
cout<<"\n enter first student no:";
cin>> a[0];
cout<<"\n enter second student no:";
cin>> a[1];
cout<<"\n enter third student no:";
cin>>a[2];
cout<<"\n enter forth student no:";
cin>>a[3];
cout<<"\n enter fifth student no:";
cin>>a[4];
sum = a[0]+a[1]+a[2]+a[3]+a[4];
avg = sum/5;
cout<<"average fifth student no is :"<<avg;
getch();
}
Output-
Q3.Write a program to search given number in array-
Source Code-
#include<stdio.h>
#include<conio.h>
int main()
{
int arr[10],i,n,ele;
printf("Enter array size:");
scanf("%d", &n);
printf("Enter array elements:");
for (i=0; i<n; i++)
{
scanf("%d", &arr[i]);
}
printf("Enter element to search:");
scanf("%d", &ele);
for (i=0; i<n; i++)
{
if (arr[i] == ele)
{
printf("%d found at position %d", ele, i+1);
return 0;
}
}
printf("element not found");
}
Output-
Q4.Write a program to count the element to given array –
Source Code-
#include<iostream.h>
#include<conio.h>
void main()
{
int n,array[100];
clrscr();
cout<<"\n Enter array size:";
cin>>n;
cout<<"Enter array element:";
for(int i=1;i<=n;i++)
{
cin>>array[i];
}
cout<<"array elements is:";
for(i=1;i<=n;i++)
{
cout<<"\t"<<array[i];
}
cout<<"\nTotal array elements is:"<<i-1;
getch();
}

Output-
Q5. Write a program to print the all element in array-
Source Code-
#include<stdio.h>
#include<conio.h>
int main()
{
int a[5], i;
printf("Enter Array Element:");
for(i=0; i<5; i++)
{
scanf("%d", &a[i]);
}
printf("\n Array Element:");
for (i=0; i<5; i++)
{
printf("%d", a[i]);
}
return 0;
//getch();
}

Output-
Q6. Write a program to print matrix-
Source Code-
#include<stdio.h>
#include<conio.h>
int main()
{
int i,j,m,n;
int matrix[10] [20];
printf("Enter number of rows:");
scanf("%d",&m);
printf("Enter number of columns:");
scanf("%d", &n);
for (i=0; i<m; i++)
{
for(j=0; j<n; j++)
{
printf("Enter data in [%d] [%d]:", i,j);
scanf("%d", &matrix[i][j]);
}
}
for(i=0; i<m; i++)
{
for(j=0; j<n; j++)
{
printf("%d\t", matrix[i][j]);
}
printf("\n");
}
return 0;
//getch();
}

Output-
Q7. Write a program to print diagonal matrix of the matrix.
Source Code-
#include<stdio.h>
#include<conio.h>
int main()
{
int array1 [10][10], i,j,m,n,sum = 0;
printf("Enter no of rows::");
scanf("%d", &m);
printf("\n Enter no of colums::");
scanf("%d", &n);
printf("\Enter value of the matrix ::\n");
for (i=0; i<m; i++)
{
for(j=0; j<n; j++)
{
printf("\n Enter a[%d][%d] value::",i,j);
scanf("%d", &array1 [i][j]);
}
}
printf("\n the diagonal element of a matrix are:\n\n");
if(m==n)
{
for (i=0; i<m; i++)
{
for(j=0; j<n; j++)
{
if(i==j)
printf("\t%d", array1 [i][j]);
else
printf("\t");
}
printf("\n\n");
}
}
else
{
printf("\n matrix is not a sqare matrix:");
}
return 0;
//getch();
}

Output-
Q8.Write a program to find sum, multiplication and inverse
of matrix.
Source Code:-
#include<stdio.h>
#include<conio.h>
void main()
{
int i,j,a[3][3],b[3][3],c[3][3]={0},d[3][3]={0},k,m,n,p,q;
clrscr();
printf("Enter number of rows and columns in A:");
scanf("%d%d",&m,&n);
printf("Enter number of rows and columns in B:");
scanf("%d%d",&p,&q);
printf("Enter elements of matrix A:");
for(i=0;i<m;i++)
for(j=0;j<n;j++)
scanf("%d",&a[i][j]);
printf("Enter elements of matrix B:");
for(i=0;i<p;i++)
for(j=0;j<q;j++)
scanf("%d",&b[i][j]);
for(i=0;i<m;i++)
for(j=0;j<n;j++)
c[i][j]=a[i][j]+b[i][j];
printf("Result of Matrix Addition\n");
for(i=0;i<m;i++){
for(j=0;j<n;j++)
printf("%d\t",c[i][j]);
printf("\n");
}
for(i=0;i<m;i++)
for(j=0;j<q;j++)
for(k=0;k<p;k++)
d[i][j]+=a[i][k]*b[k][j];
printf("\n Result of Matrix Multiplication:\n");
for(i=0;i<m;i++)
{
for(j=0;j<q;j++)
printf("%d\t",d[i][j]);
printf("\n");
getch();
}
}
Output:-
Q9.Write a program to insert an item into linear array.
Source Code:-
#include<stdio.h>
#include<conio.h>
void main()
{
int array[50],position,c,n,value;
printf("Enter number of elements in the array");
scanf("%d",&n);
printf("Enter %d elements\n",n);
for(c=0;c<n;c++)
scanf("%d",&array[c]);
printf("Please enter the location where you want to insert an new element\n");
scanf("%d",&position);
printf("Please enter the value");
scanf("%d",&value);
for(c=n-1;c>=position-1;c--)
array[c+1]=array[c];
array[position-1]=value;
printf("Resultant array is:\n");
for(c=0;c<=n;c++)
printf("%d\n",array[c]);
getch();
}
Output:-
Q10.Write a program to delete an item from the linear
array-
Source code-
#include<stdio.h>
#include<conio.h>
void main()
{
int i, size, pos;
int a[] = {2,4,6,8,12};
size = size of(a)/ size of(a[0];
printf("the array elements before deletion operation:\n");
for (i=0; i<size; i++)
printf("a[%d] = %d\n", i, a[i]);
printf("\n Enter the position from where you wish to delet the element:");
scanf("%d", &pos);
printf("\n the array element after deletion operation are:\n");
for(i=pos-1; i<size; i++)
a[i] = a[i+1];
size = size -1;
for(i=0; i<size; i++)
printf("a[%d] = %d\n", i, a[i]);
}
Output-
Q11. Write a program in bubble short-
Source Code-
#include <stdio.h>
int main()
{
int array[100], n, c, d, swap;
printf("Enter number of elements\n");
scanf("%d", &n);
printf("Enter %d integers\n", n);
for (c = 0; c < n; c++)
scanf("%d", &array[c]);
for (c = 0 ; c < n - 1; c++)
{
for (d = 0 ; d < n - c - 1; d++)
{
if (array[d] > array[d+1]) /* For decreasing order use '<' instead of '>' */
{
swap = array[d];
array[d] = array[d+1];
array[d+1] = swap;
}
}
}
printf("Sorted list in ascending order:\n");
for (c = 0; c < n; c++)
printf("%d\n", array[c]);
return 0;
//getch()
}
Output-
Q12.Write a program into search an item with the help of
binary search.
Source Code-
#include<stdio.h>
#include<conio.h>
int main()
{
int c, first, last, middle, n, search, array[100];
printf("Enter number of elements\n");
scanf("%d",&n);
printf("Enter %d integers\n", n);
for ( c = 0 ; c < n ; c++ )
scanf("%d",&array[c]);
printf("Enter value to find\n");
scanf("%d",&search);
first = 0;
last = n - 1;
middle = (first+last)/2;
while( first <= last )
{
if ( array[middle] < search )
first = middle + 1;
else if ( array[middle] == search )
{
printf("%d found at location %d.\n", search, middle+1);
break;
}
else
last = middle - 1;
middle = (first + last)/2;
}
if ( first > last )
printf("Not found! %d is not present in the list.\n", search);
return 0;
}

Output-
Q13.Write a program to print all the elements of linear
linked list.
Source Code:-
#include<stdio.h>
#include<conio.h>
#include<stdlib.h>
struct node
{
int data;
struct node *next;
}
*head;
void createlist(int n);
void display();
int main()
{
int n,index;
printf("enter number of nodes to create;");
scanf("%d",&n);
createlist(n);
printf("\n data in list:\n");
display();
return 0;
}
void createlist(int n)
{
struct node *newnode,*temp;
int data,i;
head=malloc(sizeof(struct node));
if(head==NULL)
{
printf("unable to allocate memory");
exit(0);
}
printf("enter data of node 1:");
scanf("%d",&data);
head->data=data;
head->next=NULL;
temp=head;
for(i=2;i<=n;i++)
{
newnode=malloc(sizeof(struct node));
if(newnode==NULL)
{
printf("unable to allocate memory");
exit(0);
}
printf("enter data of node %d:",i);
scanf("%d",&data);
newnode->data=data;
newnode->next=NULL;
temp->next=newnode;
temp=temp->next;
}
}
void display()
{
struct node*temp;
if(head==NULL)
{
printf("list is empty \n"); getch();
return;
}
temp=head;
while(temp!=NULL)
{
printf("%d,",temp->data);
temp=temp->next;
}
printf("\n");
}
Output:-
Q.14 write a program to search an item into linked list-
Source Code-
#include<stdio.h>
#include<stdlib.h>
struct Node
{
int data;
struct Node *next;
};

void display (struct Node *node)


{

//as linked list will end when Node is Null


while (node != NULL)
{
printf ("%d ", node->data);
node = node->next;
}
printf ("\n");
}

int searchElement (struct Node *head, int item)


{
struct Node *current = head; // Initialize current
int index = 0;
// traverse till then end of the linked list
while (current != NULL)
{
if (current->data == item)
{
return index;
}
current = current->next;
index++;
}
return -1;
}

int main ()
{
int item; int index;

//creating 4 pointers of type struct Node


//So these can point to address of struct type variable
struct Node *head = NULL;
struct Node *node2 = NULL;
struct Node *node3 = NULL;
struct Node *node4 = NULL;

// allocate 3 nodes in the heap


head = (struct Node *) malloc (sizeof (struct Node));
node2 = (struct Node *) malloc (sizeof (struct Node));
node3 = (struct Node *) malloc (sizeof (struct Node));
node4 = (struct Node *) malloc (sizeof (struct Node));

head->data = 10; // data set for head node


head->next = node2; // next pointer assigned to address of node2
node2->data = 15;
node2->next = node3;
node3->data = 20;
node3->next = node4;
node4->data = 25;
node4->next = NULL;
printf ("\nLinked List: ");
display (head);
printf ("Enter element to search: ");
scanf ("%d", &item);
index= searchElement (head, item);
if (index == -1)
printf ("Item not found");
else
printf ("Item found at position: %d", index + 1);

return 0;
}
Output:-
Q15. Write a program to find the location of an item into
sorted Linked list .
Source Code:-
#include <stdio.h>
#include <stdlib.h>

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

int findLocationSorted(struct Node* head, int key) {


struct Node* current = head;
int position = 1;

while (current != NULL && current->data < key) {


current = current->next;
position++;
}

return (current && current->data == key) ? position : -1; // key not found
}

int main() {
struct Node* head = NULL;

// Assume you have a sorted linked list; populate it as needed

int key = 30;


int position = findLocationSorted(head, key);

if (position != -1)
printf("Item %d found at location %d", key, position);
else
printf("Item %d not found in the sorted linked list", key);

return 0;
}
Output:-
Q16. Write a program to insert new node into linked
list as First Node .
Source Code:-
#include<stdio.h>
#include<conio.h>
#include<stdlib.h>
struct Node
{ int data;
struct Node *next;
};
void linkedlisttraversal(struct Node *ptr)
{ while(ptr!=NULL)
{ printf("yash %d\n",ptr->data);
ptr=ptr->next;
}
}
struct Node * insertatfirst(struct Node * head,int data)
{
struct Node * ptr=(struct Node *) malloc(sizeof(struct Node));
ptr->next=head;
ptr->data=data;
return ptr;
}
int main()
{ struct Node *head;
struct Node *second;
struct Node *third;
//Allocate memory for nodes in the heap
head=(struct Node *) malloc(sizeof(struct Node));
second=(struct Node *) malloc(sizeof(struct Node));
third=(struct Node *) malloc(sizeof(struct Node));
//link first and second
head->data=5;
head->next=second;
second->data=11;
second->next=third;
third->data=12;
third->next=NULL;

printf("linked list before addition\n");


linkedlisttraversal(head);
head=insertatfirst(head,55);
printf("linkd list after addition\n");
linkedlisttraversal(head);
return 0;
}

Output:-
Q17.Write a program to insert new node into linked list as
particular node-
Source Code-
#include<stdio.h>

#include<conio.h>

#include<stdlib.h>

struct Node

{ int data;

struct Node *next;

};

void linkedlisttraversal(struct Node *ptr)

{ while(ptr!=NULL)

{ printf("yash %d\n",ptr->data);

ptr=ptr->next;

struct Node * insertatfirst(struct Node * head,int data)

struct Node * ptr=(struct Node *) malloc(sizeof(struct Node));

ptr->next=head;

ptr->data=data;

return ptr;

int main()

{ struct Node *head;

struct Node *second;

struct Node *third;

//Allocate memory for nodes in the heap


head=(struct Node *) malloc(sizeof(struct Node));

second=(struct Node *) malloc(sizeof(struct Node));

third=(struct Node *) malloc(sizeof(struct Node));

//link first and second

head->data=5;

head->next=second;

second->data=11;

second->next=third;

third->data=12;

third->next=NULL;

printf("linked list before addition\n");

linkedlisttraversal(head);

head=insertatfirst(head,55);

printf("linkd list after addition\n");

linkedlisttraversal(head);

return 0;

Output:-
Q18. Write a program to insert new node into linked
list as End Node .
Source Code:-
#include <stdio.h>

//Represent a node of the singly linked list


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

//Represent the head and tail of the singly linked list


struct node *head, *tail = NULL;

//addAtEnd() will add a new node to the end of the list


void addAtEnd(int data) {
//Create a new node
struct node *newNode = (struct node*)malloc(sizeof(struct node));
newNode->data = data;
newNode->next = NULL;

//Checks if the list is empty


if(head == NULL) {
//If list is empty, both head and tail will point to new node
head = newNode;
tail = newNode;
}
else {
//newNode will be added after tail such that tail's next will point to newNode
tail->next = newNode;
//newNode will become new tail of the list
tail = newNode;
}
}

//display() will display all the nodes present in the list


void display() {
//Node current will point to head
struct node *current = head;

if(head == NULL) {
printf("List is empty\n");
return;
}
printf("Adding nodes to the end of the list: \n");
while(current != NULL) {
//Prints each node by incrementing pointer
printf("%d ", current->data);
current = current->next;
}
printf("\n");
}

int main()
{
//Adding 1 to the list
addAtEnd(1);
display();

//Adding 2 to the list


addAtEnd(2);
display();

//Adding 3 to the list


addAtEnd(3);
display();

//Adding 4 to the list


addAtEnd(4);
display();

return 0;
}
Output:-
Q19.Write a program to insert an element into stack.
Source Code-

#include<stdio.h>
#include<conio.h>
int stack[100],choice,n,top,x,i;
voidpush();
voiddisplay();
intmain()
{
clrscr();
top=-1;
printf("\n enter the size of stack:");
scanf("%d",&n);
printf("\n STACK OPERATION USING ARRAY");
printf("\n\t 1.PUSH\n\t 2.DISPLAY\n\t 3.EXIT");
do
{
printf("\n enter the choice");
scanf("%d",&choice);
switch(choice)
{
case 1:
{
push();
break;
}
case 2:
{
display();
break;
}
case 3:
{ printf("\n\t exit point");
break;
}
default:\
{
printf("\n\t please enter a valid choice(1/2/3)");
}
}
}
while(choice!=3);
return 0;
}
voidpush()
{
if(top>=n-1)
{
printf("\n\t stack over");
}
else
{
printf("enter a value to be pushed:");
scanf("%d",&x);
top++;
stack[top]=x;
}
}
voiddisplay()
{
if(top>=0)
{
printf("\n the elements in stack \n");
for(i=top;i>=0;i--)
printf("\n%d",stack[i]);
printf("\n press next choice");
}
else
{
printf("\n the stack is empty");
}
}

Output-
Q20.write a program to delete an item from stack.
Source Code-
#include<stdio.h>
#include<conio.h>
#define MAX 50
void push();
void pop();
void display();

int stack[MAX],top=-1,item;
void main()
{
int ch;
clrscr();
do
{
printf("\n1.\tpush\n2.\tpop\n3.\tdisplay\n4.\texit\n");
printf("enter your choice:");
scanf("%d",&ch);
switch(ch)
{

case 1:
push();
break;
case 2:
pop();
break;
case 3:
display();
break;
default:
printf("invalid entry please try again...");
}
}
while(ch!=4);
getch();
}
void push()
{
if(top==MAX-1)
printf("\n stack is full.");
{
printf("enter item:");
scanf("%d",&item);
top++;
stack[top]=item;
printf("\n item inserted :%d",item);
}
}
void pop()
{
if(top==-1)
printf("stack is empty.");
else{
item=stack[top];
top--;
printf("\n item deleted:%d",item);
}
}
void display()
{int i;
if(top==-1)
printf("stack is empty");
else
{
printf("stack elements are:");
for(i=top;i>=0;i--)
printf("%d\t",stack[i]);
}
}

Output:-
Q21.write a program to insert an item into queue.
Source Code-
#include<iostream.h>
#include<conio.h>
#include<process.h>
void instque();
void display();
int queue[5];
int front=-1,rear=-1;
void main()
{
int choice;
clrscr();
do
{
cout<<"1.insert an element in queue \n";
cout<<"2.display queue \n";
cout<<"3.exit\n";
cout<<"enter your choice:";
cin>>choice;
switch(choice)
{
case 1:
instque();
break;
case 2:
display();
break;
case 3:
exit(0);
}
}while(choice!=3);
getch();
}
void instque()
{
int info;
cout<<"enter the element to be inserted";
cin>>info;
if(front==-1)
{
front=0;
rear=0;
}
else
{rear=rear+1;
}
queue[rear]=info;
}
void display()
{
if(front==-1)
{
cout<<"the queue is empty";
}
else{
for(int i=0;i<=rear;i++)
{cout<<"queue is:"<<queue[i]<<"\t" ;
}
}
cout<<"\n";
}

Output:-
Q22.write a program to delete an item from queue.
Source Code-
#include<iostream.h>
#include<conio.h>
#include<process.h>
void delqueue();
void display();
int queue[5]={11,12,13,15,16};
int front=0,rear=4;
void main()
{ int choice;
clrscr();
do
{
cout<<"1.delete an element from queue \n";
cout<<"2.display queue\n";
cout<<"3.exit\n";
cout<<"enter your choice";
cin>>choice;
switch(choice)
{
case 1:
delqueue();
break;
case 2:
display();
break;
case 3:
exit(0);
}
}while(choice!=0);
getch();
}
void delqueue()
{
int info;
if(front!=-1)
{
info=queue[front];
if(front==rear)
{
front=-1;
rear=-1;
}
else{
front=front+1;
}
cout<<"delete element is:"<<info<<"\n";
}
else
cout<<"queuer is empty";
}
void display()
{
if(front==-1)
cout<<"queue is empty";
else{
for(int i=front;i<=rear;i++)
{
cout<<queue[i]<<"\t";
}
}
cout<<"\n";
}

Output:-
Q23. Write a program to sort the given element using
Quick Sort.
Source Code:-
#include <stdio.h>

// function to swap elements


void swap(int *a, int *b) {
int t = *a; int j;
*a = *b;
*b = t;
}

// function to find the partition position


int partition(int array[], int low, int high) {

// select the rightmost element as pivot


int pivot = array[high];

// pointer for greater element


int i = (low - 1);
int j;
// traverse each element of the array
// compare them with the pivot
for ( j = low; j < high; j++) {
if (array[j] <= pivot) {

// if element smaller than pivot is found


// swap it with the greater element pointed by i
i++;

// swap element at i with element at j


swap(&array[i], &array[j]);
}
}

// swap the pivot element with the greater element at i


swap(&array[i + 1], &array[high]);

// return the partition point


return (i + 1);
}

void quickSort(int array[], int low, int high) {


if (low < high) {

// find the pivot element such that


// elements smaller than pivot are on left of pivot
// elements greater than pivot are on right of pivot
int pi = partition(array, low, high);

// recursive call on the left of pivot


quickSort(array, low, pi - 1);

// recursive call on the right of pivot


quickSort(array, pi + 1, high);
}
}

// function to print array elements


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

// main function
void main() { int j;
int data[] = {8, 7, 2, 1, 0, 9, 6};

int n = sizeof(data) / sizeof(data[0]); clrscr();

printf("Unsorted Array\n");
printArray(data, n);

// perform quicksort on data


quickSort(data, 0, n - 1);

printf("Sorted array in ascending order: \n");


printArray(data, n); getch();
}
Output:-
Q24.Write a program to sort the given element using
insertion sort.
Source Code-
#include<iostream.h>
#include<conio.h>
void insertion_sort(int a[],int n)
{
int i,j,temp;
i=1;
for(i=1;i<n;i++)
{
temp=a[i];
for(j=i-1;j>=0&&temp<a[j];j--)
{
a[j+1]=a[j];
}
a[j+1]=temp;
}
}
void main()
{
int i;
int a[10],n;
clrscr();
cout<<"enter the size of array:";
cin>>n;
cout<<"\nenter the element for list:\n";
for(i=0;i<n;i++)
{
cout<<"a["<<i<<"]=";
cin>>a[i];
}
cout<<"\nafter sorting list:";
insertion_sort(a,n);
for(i=0;i<=4;i++)
{
cout<<a[i]<<" ";
}
getch();
}
Output:
Q25. Write a program to sort the given element using
Selection Sort.
Source Code:-
#include<iostream.h>
#include<conio.h>
int min(int a[],int k,int n)
{
int loc,min;

min=a[k];
loc=k;
for(int j=k+1;j<=n-1;j++)
{
if(min>a[j])
{
min=a[j];
loc=j;
}
}
return loc;
}
void main()
{
int a[10],i,temp,n;
int loc;
clrscr();
cout<<"\nenter size of list:";
cin>>n;
cout<<"\nenter the element for list:\n";
for(i=0;i<n;i++)
{
cout<<"a["<<i<<"]=";
cin>>a[i];
}
cout<<"before sorting element in list:";
for(i=0;i<n;i++)
{
cout<<a[i]<<" ";
}
for(i=0;i<=n-1;i++)
{
loc=min(a,i,n);
temp=a[i];
a[i]=a[loc];
a[loc]=temp;
}
cout<<"\nafter sorting element in list:";
for(i=0;i<n;i++)
{
cout<<a[i]<<" ";
}
getch();
}

Output:-
Q26. Write a program to print the all nodes of Tree
using Preorder traversal.
Source Code:-
#include<stdio.h>
#include<stdlib.h>
// We are creating struct for the binary tree below
struct node
{
int data;
struct node *left, *right;
};

// newNode function for initialisation of the newly created node


struct node *newNode (int item)
{
struct node *temporary = (struct node *) malloc (sizeof (struct node));
temporary->data = item;
temporary->left = temporary->right = NULL;
return temporary;
}

// Here we print the preorder recursively


void preorder (struct node *root)
{
if (root != NULL)
{
printf ("%d ", root->data);
preorder (root->left);
preorder (root->right);
}
}
// Basic Program to insert new node at the correct position in BST
struct node *insert (struct node *node, int data)
{
/* When there no node in the tree(subtree) then create
and return new node using newNode function */
if (node == NULL)
return newNode (data);

/* If not then we recur down the tree to find correct position for insertion */
if (data < node->data)
node->left = insert (node->left, data);
else if (data > node->data)
node->right = insert (node->right, data);

return node;
}

void main ()
{
/* What our binary search tree looks like really
9
/\
7 14
/\/\
5 8 11 16 */

struct node *root = NULL;


root = insert (root, 9);
insert (root, 7);
insert (root, 5);
insert (root, 8); clrscr();
insert (root, 14);
insert (root, 11);
insert (root, 16);
printf ("The preorder is :\n");
preorder (root);

getch();
}
Output:-
Q27. Write a program to print the all nodes of Tree
using Inorder traversal.
Source Code:-
#include <stdio.h>
#include <stdlib.h>
struct node {
int element;
struct node* left;
struct node* right;
};
/*To create a new node*/
struct node* createNode(int val)
{
struct node* Node = (struct node*)malloc(sizeof(struct node));
Node->element = val;
Node->left = NULL;
Node->right = NULL;
return (Node);
}
/*function to traverse the nodes of binary tree in Inorder*/
void traverseInorder(struct node* root)
{
if (root == NULL)
return;
traverseInorder(root->left);
printf(" %d ", root->element);
traverseInorder(root->right);
}
void main()
{
struct node* root = createNode(40);
root->left = createNode(30);
root->right = createNode(50);
root->left->left = createNode(25);
root->left->right = createNode(35);
root->left->left->left = createNode(15);
root->left->left->right = createNode(28);
root->right->left = createNode(45);
root->right->right = createNode(60);
root->right->right->left = createNode(55);
root->right->right->right = createNode(70);
printf("\n The Inorder traversal of given binary tree is -\n");
traverseInorder(root);
getch();
}
Output:-
Q28. Write a program to print the all nodes of Tree
using Postorder traversal.
Source Code:-
#include <stdio.h>
#include <stdlib.h>

struct node {
int element;
struct node* left;
struct node* right;
};

/*To create a new node*/


struct node* createNode(int val)
{
struct node* Node = (struct node*)malloc(sizeof(struct node));
Node->element = val;
Node->left = NULL;
Node->right = NULL;

return (Node);
}

/*function to traverse the nodes of binary tree in postorder*/


void traversePostorder(struct node* root)
{
if (root == NULL)
return;
traversePostorder(root->left);
traversePostorder(root->right);
printf(" %d ", root->element);
}

int main()
{
struct node* root = createNode(40);
root->left = createNode(30);
root->right = createNode(50);
root->left->left = createNode(25);
root->left->right = createNode(35);
root->left->left->left = createNode(15);
root->left->left->right = createNode(28);
root->right->left = createNode(45);
root->right->right = createNode(60);
root->right->right->left = createNode(55);
root->right->right->right = createNode(70);

printf("\n The Postorder traversal of given binary tree is -\n");


traversePostorder(root);
return 0;
}
Output:-
Q29. Write a program to insert an item into BST(binary
search tree)
Source Code:-
#include <stdio.h>
#include <stdlib.h>

struct node {
int key;
struct node *left, *right;
};

// A utility function to create a new BST node


struct node* newNode(int item)
{
struct node* temp
= (struct node*)malloc(sizeof(struct node));
temp->key = item;
temp->left = temp->right = NULL;
return temp;
}

// A utility function to do inorder traversal of BST


void inorder(struct node* root)
{
if (root != NULL) {
inorder(root->left);
printf("%d ", root->key);
inorder(root->right);
}
}

// A utility function to insert


// a new node with given key in BST
struct node* insert(struct node* node, int key)
{
// If the tree is empty, return a new node
if (node == NULL)
return newNode(key);

// Otherwise, recur down the tree


if (key < node->key)
node->left = insert(node->left, key);
else if (key > node->key)
node->right = insert(node->right, key);

// Return the (unchanged) node pointer


return node;
}

// Driver Code
void main()
{
/* Let us create following BST
50
/ \
30 70
/ \ / \
20 40 60 80 */
struct node* root = NULL;
root = insert(root, 50);
insert(root, 30);
insert(root, 20);
insert(root, 40);
insert(root, 70);
insert(root, 60);
insert(root, 80); clrscr();

// Print inorder traversal of the BST


inorder(root);

getch();
}
Output:-
Q30. Write a program to delete an item into
BST(binary search tree)
Source Code:-
#include <stdio.h>
#include <stdlib.h>

struct Node {
int key;
struct Node *left, *right;
};

// A utility function to create a new BST node


struct Node* newNode(int item)
{
struct Node* temp = (struct Node*)malloc(sizeof(struct Node));
temp->key = item;
temp->left = temp->right = NULL;
return temp;
}

// A utility function to do inorder traversal of BST


void inorder(struct Node* root)
{
if (root != NULL) {
inorder(root->left);
printf("%d ", root->key);
inorder(root->right);
}
}

/* A utility function to insert a new node with given key in


* BST */
struct Node* insert(struct Node* node, int key)
{
/* If the tree is empty, return a new node */
if (node == NULL)
return newNode(key);

/* Otherwise, recur down the tree */


if (key < node->key)
node->left = insert(node->left, key);
else
node->right = insert(node->right, key);

/* return the (unchanged) node pointer */


return node;
}

/* Given a binary search tree and a key, this function


deletes the key and returns the new root */
struct Node* deleteNode(struct Node* root, int k)
{
// Base case
if (root == NULL)
return root;

// Recursive calls for ancestors of


// node to be deleted
if (root->key > k) {
root->left = deleteNode(root->left, k);
return root;
}
else if (root->key < k) {
root->right = deleteNode(root->right, k);
return root;
}

// We reach here when root is the node


// to be deleted.

// If one of the children is empty


if (root->left == NULL) {
struct Node* temp = root->right;
free(root);
return temp;
}
else if (root->right == NULL) {
struct Node* temp = root->left;
free(root);
return temp;
}

// If both children exist


else {

struct Node* succParent = root;

// Find successor
struct Node* succ = root->right;
while (succ->left != NULL) {
succParent = succ;
succ = succ->left;
}

// Delete successor. Since successor


// is always left child of its parent
// we can safely make successor's right
// right child as left of its parent.
// If there is no succ, then assign
// succ->right to succParent->right
if (succParent != root)
succParent->left = succ->right;
else
succParent->right = succ->right;

// Copy Successor Data to root


root->key = succ->key;

// Delete Successor and return root


free(succ);
return root;
}
}

// Driver Code
void main()
{
/* Let us create following BST
50
/ \
30 70
/ \ / \
20 40 60 80 */
struct Node* root = NULL;
root = insert(root, 50);
root = insert(root, 30);
root = insert(root, 20);
root = insert(root, 40);
root = insert(root, 70);
root = insert(root, 60); clrscr();

printf("Original BST: ");


inorder(root);

printf("\n\nDelete a Leaf Node: 20\n");


root = deleteNode(root, 20);
printf("Modified BST tree after deleting Leaf Node:\n");
inorder(root);

printf("\n\nDelete Node with single child: 70\n");


root = deleteNode(root, 70);
printf("Modified BST tree after deleting single child Node:\n");
inorder(root);

printf("\n\nDelete Node with both child: 50\n");


root = deleteNode(root, 50);
printf("Modified BST tree after deleting both child Node:\n");
inorder(root);

getch();
}
Output:-
Q31.Write a program to demonstrate breadth first search.
Source Code-
#include<stdio.h>
#include<conio.h>
int a[20][20],q[20],visited[20],n,i,j,f=0,r=-1;
void bfs(int v) {
for (i=1;i<=n;i++)
if(a[v][i] && !visited[i])
q[++r]=i;
if(f<=r) {
visited[q[f]]=1;
bfs(q[f++]);
}
}
void main() {
int v;
clrscr();
printf("\n Enter the number of vertices:");
scanf("%d",&n);
for (i=1;i<=n;i++) {
q[i]=0;
visited[i]=0;
}
printf("\n Enter graph data in matrix form:\n");
for (i=1;i<=n;i++)
for (j=1;j<=n;j++)
scanf("%d",&a[i][j]);
printf("\n Enter the starting vertex:");
scanf("%d",&v);
bfs(v);
printf("\n The node which are reachable are:\n");
for (i=1;i<=n;i++)
if(visited[i])
printf("%d\t",i); else
printf("\n Bfs is not possible");
getch();
}
Output:
Q32.Write a program demonstrate to depth first search.
Source Code-
#include<stdio.h>
#include<conio.h>
int a[20][20],reach[20],n;
voiddfs(int v) {
int i;
reach[v]=1;
for (i=1;i<=n;i++)
if(a[v][i] && !reach[i]) {
printf("\n %d->%d",v,i);
dfs(i);
}
}
int main() {
inti,j,count=0;
printf("\n Enter number of vertices:");
scanf("%d",&n);
for (i=1;i<=n;i++) {
reach[i]=0;
for (j=1;j<=n;j++)
a[i][j]=0;
}
printf("\n Enter the adjacency matrix:\n");
for (i=1;i<=n;i++)
for (j=1;j<=n;j++)
scanf("%d",&a[i][j]);
dfs(1);
printf("\n");
for (i=1;i<=n;i++) {
if(reach[i])
count++;
}
if(count==n)
printf("\n Graph is connected"); else
printf("\n Graph is not connected");
return 0;
}

Output:

You might also like