New BCA data structure lab file-1
New BCA data structure lab file-1
2
Write a C program to find the largest element in an array
largest = array[0];
return 0;
}
Solution:
#include <stdio.h>
#include <stdlib.h>
// List is empty
if(start == NULL)
printf("\nList is empty\n");
// Changes links
temp->link = 0;
temp->info = data;
head = start;
while(head->link != NULL) {
head = head->link;
}
head->link = temp;
}
// Change Links
temp = start;
newnode->info = data;
newnode->link = 0;
while(i< pos - 1) {
temp = temp->link;
i++;
}
newnode->link = temp->link;
temp->link = newnode;
}
// Otherwise
else{
printf("\nEnter index : ");
// Position to be deleted
scanf("%d", &pos);
position = malloc(sizeof(structnode));
temp = start;
// Change Links
position = temp->link;
temp->link = position->link;
// Free memory
free(position);
}
}
// If LL is empty
if(start == NULL)
printf("\nList is empty\n");
// Otherwise
else{
temp = start;
intmax = temp->info;
// If LL is empty
if(start == NULL)
printf("\nList is empty\n");
// Otherwise
else{
temp = start;
// Traverse the LL
while(temp != NULL) {
// If LL is empty
if(start == NULL) {
return;
}
// Else
else{
// Traverse the LL
while(current != NULL) {
index = current->link;
// If LL is empty
if(start == NULL)
printf("List is empty\n");
// Else
else{
// Traverse the LL
while(start != NULL) {
// reversing of points
t2 = start->link;
start->link = t1;
t1 = start;
start = t2;
}
start = t1;
// Print the LL
while(temp != NULL) {
printf("%d ", temp->info);
temp = temp->link;
}
}
}
// checking by traversing
while(tr != NULL) {
// checking for key
if(tr->info == key) {
found = 1;
break;
}
// moving forward if not at this position
else{
tr = tr->link;
}
}
// Driver Code
intmain()
{
createList();
intchoice;
while(1) {
switch(choice) {
case1:
traverse();
break;
case2:
insertAtFront();
break;
case3:
insertAtEnd();
break;
case4:
insertAtPosition();
break;
case5:
deleteFirst();
break;
case6:
deleteEnd();
break;
case7:
deletePosition();
break;
case8:
maximum();
break;
case9:
mean();
break;
case10:
sort();
break;
case11:
reverseLL();
break;
case12:
search();
break;
case13:
exit(1);
break;
default:
printf("Incorrect Choice\n");
}
}
return0;
}
13)C Program to Implement Circular Doubly Linked List
Solution:
#include<stdio.h>
#include<stdlib.h>
// function prototyping
struct node* create(int);
voidinsert_begin(int);
voidinsert_end(int);
voidinsert_mid(int,int);
voiddelete_begin();
voiddelete_end();
voiddelete_mid();
int search(int);
void update(int,int);
void sort();
intlist_size();
void display();
voiddisplay_reverse(struct node*);
intget_data();
intget_position();
int main()
{
charuser_active='Y';
intuser_choice;
int data, position;
while(user_active=='Y'||user_active=='y')
{
printf("\n\n------ Circular Doubly Linked List -------\n");
printf("\n1. Insert a node at beginning");
printf("\n2. Insert a node at end");
printf("\n3. Insert a node at given position");
printf("\n\n4. Delete a node from beginning");
printf("\n5. Delete a node from end");
printf("\n6. Delete a node from given position");
printf("\n\n7. Print list from beginning");
printf("\n8. Print list from end");
printf("\n9. Search a node data");
printf("\n10. Update a node data");
printf("\n11. Sort the list");
printf("\n12. Exit");
printf("\n\n------------------------------\n");
printf("\n------------------------------\n");
switch(user_choice)
{
case1:
printf("\nInserting a node at beginning");
data =get_data();
insert_begin(data);
break;
case2:
printf("\nInserting a node at end");
data =get_data();
insert_end(data);
break;
case3:
printf("\nInserting a node at the given position");
data =get_data();
position =get_position();
insert_mid(position, data);
break;
case4:
printf("\nDeleting a node from beginning\n");
delete_begin();
break;
case5:
printf("\nDeleting a node from end\n");
delete_end();
break;
case6:
printf("\nDelete a node from given position\n");
position =get_position();
delete_mid(position);
break;
case7:
printf("\nPrinting the list from beginning\n\n");
display();
break;
case8:
printf("\nPrinting the list from end\n\n");
if(head == NULL)
{
printf("\n\tList is Empty!\n");
}else{
display_reverse(head);
}
break;
case9:
printf("\nSearching the node data");
data =get_data();
if(search(data)==1){
printf("\n\tNode Found\n");
}else{
printf("\n\tNode Not Found\n");
}
break;
case10:
printf("\nUpdating the node data");
data =get_data();
position =get_position();
update(position, data);
break;
case11:
sort();
printf("\nList was sorted\n");
break;
case12:
printf("\nProgram was terminated\n\n");
return0;
default:
printf("\n\tInvalid Choice\n");
}
printf("\n...............................\n");
printf("\nDo you want to continue? (Y/N) : ");
fflush(stdin);
scanf(" %c",&user_active);
}
return0;
}
if(new_node== NULL)
{
printf("\nMemory can't be allocated\n");
return NULL;
}
new_node->data = data;
new_node->next = NULL;
new_node->prev= NULL;
returnnew_node;
}
if(new_node)
{
// if list is empty
if(head == NULL)
{
new_node->next =new_node;
new_node->prev=new_node;
head =new_node;
return;
}
head->prev->next =new_node;
new_node->prev= head->prev;
new_node->next = head;
head->prev=new_node;
head =new_node;
}
}
if(new_node)
{
if(head == NULL)
{
new_node->next =new_node;
new_node->prev=new_node;
head =new_node;
return;
}
head->prev->next =new_node;
new_node->prev= head->prev;
new_node->next = head;
head->prev=new_node;
}
}
if(new_node!= NULL){
struct node *temp = head,*prev= NULL;
inti=1;
voiddelete_begin()
{
if(head == NULL){
printf("\nList is Empty\n");
return;
}elseif(head->next == head){
free(head);
head = NULL;
return;
}
free(temp);
temp = NULL;
}
last_node->prev->next = head;
head->prev=last_node->prev;
free(last_node);
last_node= NULL;
}
while(i< position){
prev= temp;
temp = temp->next;
i+=1;
}
prev->next = temp->next;
temp->next->prev=prev;
free(temp);
temp = NULL;
}
}
while(++i< position){
temp = temp->next;
}
temp->data =new_value;
}
do{
temp2 = temp1->next;
while(temp2 != head)
{
if(temp1->data > temp2->data)
{
value = temp1->data;
temp1->data = temp2->data;
temp2->data = value;
}
temp2 = temp2->next;
}
temp1 = temp1->next;
}while(temp1->next != head);
display_reverse(temp->next);
printf("%d ", temp->data);
}
do{
count +=1;
temp = temp->next;
}while(temp != head);
return count;
}
intget_data()
{
int data;
printf("\n\nEnter Data: ");
scanf("%d",&data);
return data;
}
intget_position()
{
int position;
printf("\n\nEnter Position: ");
scanf("%d",&position);
return position;
}
Solution:
#include<stdio.h>
#include<stdlib.h>
structnode
{
intdata;
node*left;
node*right;
};
structnode*root;
structnode*insert(structnode*r,intdatatonode)
{
if(r=NULL)
{
r= (structnode*)malloc (sizeof(structnode));
r->data=datatonode;
r->left=NULL;
r->right=NULL;
}
elseif(datatonode<r->data)
r->left=insert(r->left,datatovalue);
else
r->rigth=insert(r->right,datatovalue);
returnr;
}
voidinOrder(structnode*r)
{
if(r!=NULL)
{
inOrder(r->left);
printf("%d",r->data);
inOrder(r->right);
}
}
voidpreOrder(structnode*r)
{
if(r!=NULL)
{
printf("%d",r->data);
preOrder(r->left);
preOrder(r->right);
}
}
voidpostOrder(structnode*r)
{
if(r!=NULL)
{
postOrder(r->left);
postOrder(r->right);
printf("%d",r->data);
}
}
intmain()
{
root=NULL;
intnumber,value;
printf("entre the number of element to be inserted ?\n");
scanf("%d",&number);
for(inti=0;i<n;i++)
{
printf("Data no %d is",i+1);
scanf("%d",&value);
root=insert(root,value);
}
printf("========INRODER
TARVERSAL===========");
inOrder(root);
printf("\n");
printf("=======PREORDER
TRAVERSAL===========");
preOrder(root);
printf("\n");
printf("=======POSTORDRER
TRAVERSAL=========");
postOrder(root);
printf("\n");
getch();
return0;
}
26) C program to implement bubble sort
1. Solution: #include <stdio.h>
2.
3. void bubble_sort(int arr[], int n) {
4. int i, j;
5. for (i = 0; i < n - 1; i++) {
6. for (j = 0; j < n - i - 1; j++) {
7. if (arr[j] > arr[j + 1]) {
8. int temp = arr[j];
9. arr[j] = arr[j + 1];
10. arr[j + 1] = temp;
11. }
12. }
13. }
14. }
15. int main() {
16. int arr[] = {64, 34, 25, 12, 22, 11, 90};
17. int n = sizeof(arr) / sizeof(arr[0]);
18. bubble_sort(arr, n);
19. printf("Sorted array: ");
20. for (int i = 0; i < n; i++) {
21. printf("%d ", arr[i]);
22. }
23. return 0;
24. }
// Driver code
intmain()
{
intarr[] = {12, 11, 13, 5, 6};
intn = sizeof(arr) / sizeof(arr[0]);
insertionSort(arr, n);
printArray(arr, n);
return0;
}
28) C program to implement quick sort
Solution:
#include <stdio.h>
// Driver code
intmain()
{
intarr[] = { 10, 7, 8, 9, 1, 5 };
intN = sizeof(arr) / sizeof(arr[0]);
// Function call
quickSort(arr, 0, N - 1);
printf("Sorted array: \n");
for(inti = 0; i< N; i++)
printf("%d ", arr[i]);
return0;
}
merge(arr, l, m, r);
}
}
// UTILITY FUNCTIONS
// Function to print an array
voidprintArray(intA[], intsize)
{
inti;
for(i = 0; i< size; i++)
printf("%d ", A[i]);
printf("\n");
}
// Driver code
intmain()
{
intarr[] = { 12, 11, 13, 5, 6, 7 };
intarr_size = sizeof(arr) / sizeof(arr[0]);
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;
return 0;
}