DS All Week Programs R-23
DS All Week Programs R-23
#include<stdio.h>
int main()
{
int a[20],i,n,temp,size;
clrscr();
printf("Enter size of the array:");
scanf("%d",&n);
size=n;
printf("Enter %d array elements:",n);
for(i=0;i<n;i++)
scanf("%d",&a[i]);
printf("Array elements are:");
for(i=0;i<n;i++)
printf("%d ",a[i]);
for(i=0;i<n;i++)
{
temp=a[i];
a[i]=a[n-1];
a[n-1]=temp;
n=n-1;
}
printf("\nArray elements in reverse are:");
for(i=0;i<size;i++)
printf("%d ",a[i]);
getch();
return -5;
}
OUTPUT:
int main()
{
int arr[50], num, i, n, found = 0;
printf("\n Enter the number of elements in the array : ");
scanf("%d", &n);
printf("\n Enter the elements: ");
for(i=0;i<n;i++)
{
scanf("%d", &arr[i]);
}
printf("\n Enter the number that has to be searched: ");
scanf("%d", &num);
for(i=0;i<n;i++)
{
if(arr[i] == num)
{
found =1;
printf("\n %d is found in the array at position = %d", num,i+1);
break;
}
}
if (found == 0)
printf("\n %d does not exist in the array", num);
getch();
return 0;
}
OUTPUT:
#include <stdio.h>
#include <stdlib.h>
#include <conio.h>
int main()
{
int arr[50], num, i, n, beg, end, mid, found=0;
printf("\n Enter the number of elements in the array: ");
scanf("%d", &n);
printf("\n Enter %d elements: ",n);
for(i=0;i<n;i++)
{
scanf("%d", &arr[i]);
}
selection_sort(arr, n);
printf("\n The sorted array is: \n");
for(i=0;i<n;i++)
printf(" %d\t", arr[i]);
printf("\n\n Enter the number that has to be searched: ");
scanf("%d", &num);
beg = 0, end = n-1;
while(beg<=end)
{
mid = (beg + end)/2;
if (arr[mid] == num)
{
printf("\n %d is present in the array at position %d", num, mid+1);
found =1;
break;
}
else if (arr[mid]>num)
end = mid-1;
else
beg = mid+1;
}
if (beg > end && found == 0)
printf("\n %d does not exist in the array", num);
getch();
return 0;
}
OUTPUT:
OUTPUT:
10 -6 95 32 77 -5 -86
-86 -6 -5 10 22 32 77 95
#include <stdio.h>
#include <conio.h>
void insertion_sort(int arr[], int n);
void main()
{
int arr[50], i, n;
printf("\n Enter the number of elements in the array: ");
scanf("%d", &n);
printf("\n Enter %d elements of the array: ",n);
for(i=0;i<n;i++)
{
scanf("%d", &arr[i]);
}
insertion_sort(arr, n);
printf("\n The sorted array is: \n");
for(i=0;i<n;i++)
printf(" %d\t", arr[i]);
getch();
}
arr[j+1] = temp;
}
}
OUTPUT:
Enter the number of elements in the array: 6
#include <stdio.h>
#include <stdlib.h>
#include <conio.h>
int smallest(int arr[], int k, int n);
void selection_sort(int arr[], int n);
void main()
{
int arr[50], i, n;
printf("\n Enter the number of elements in the array: ");
scanf("%d", &n);
printf("\n Enter %d elements of the array: ",n);
for(i=0;i<n;i++)
{
scanf("%d", &arr[i]);
}
selection_sort(arr, n);
printf("\n The sorted array is: \n");
for(i=0;i<n;i++)
printf(" %d\t", arr[i]);
getch();
}
int smallest(int arr[], int k, int n)
{
int pos = k, small=arr[k], i;
for(i=k+1;i<n;i++)
{
if(arr[i] < small)
{
small = arr[i];
pos = i;
}
}
return pos;
}
{
int k, pos, temp;
for(k=0;k<n;k++)
{
pos = smallest(arr, k, n);
temp = arr[k];
arr[k] = arr[pos];
arr[pos] = temp;
}
}
OUTPUT:
Enter the number of elements in the array: 4
#include <stdio.h>
#include <conio.h>
if(loc==right)
flag =1;
else if(a[loc]>a[right])
{
temp = a[loc];
a[loc] = a[right];
a[right] = temp;
loc = right;
}
if(flag!=1)
{
while((a[loc] >= a[left]) && (loc!=left))
left++;
if(loc==left)
flag =1;
else if(a[loc] <a[left])
{
temp = a[loc];
a[loc] = a[left];
a[left] = temp;
loc = left;
}
}
}
return loc;
}
OUTPUT:
Enter the number of elements in the array: 9
/* C program to create a linked list and perform insertions and deletions of all cases.
Creating functions to sort and finally delete the entire list at once. */
#include <stdio.h>
#include <stdlib.h>
#include <conio.h>
#include <malloc.h>
struct node
{
int data;
struct node *next;
};
struct node *start = NULL;
struct node *create_ll(struct node *);
struct node *display(struct node *);
struct node *insert_beg(struct node *);
struct node *insert_end(struct node *);
struct node *insert_before(struct node *);
struct node *insert_after(struct node *);
struct node *delete_beg(struct node *);
struct node *delete_end(struct node *);
struct node *delete_node(struct node *);
struct node *delete_after(struct node *);
struct node *delete_list(struct node *);
struct node *sort_list(struct node *);
int main()
{
int option;
do
{
printf("\n\n *****MAIN MENU *****");
printf("\n 1: Create a list");
break;
case 10: start = delete_after(start);
break;
case 11: start = delete_list(start);
printf("\n LINKED LIST DELETED");
break;
case 12: start = sort_list(start);
break;
}
}while(option !=13);
getch();
return 0;
}
ptr=ptr->next;
ptr->next = new_node;
new_node->next=NULL;
}
printf("\n Enter the data : ");
scanf("%d", &num);
}
return start;
}
struct node *display(struct node *start)
{
struct node *ptr;
ptr = start;
if (ptr == NULL)
{
printf("\nList is empty");
return ptr;
}
while(ptr != NULL)
{
printf("\t %d", ptr -> data);
ptr = ptr -> next;
}
return start;
}
preptr = ptr;
ptr = ptr -> next;
}
preptr -> next = new_node;
new_node -> next = ptr;
return start;
}
preptr = ptr;
ptr = ptr -> next;
}
preptr -> next = ptr -> next;
free(ptr);
return start;
}
}
while(ptr != NULL)
{
printf("\n %d is to be deleted next", ptr -> data);
start = delete_beg(ptr);
ptr = start;
}
}
return start;
}
OUTPUT:
**MAIN MENU **
1: Create a list
2: Display the list
3: Add a node at the beginning
4: Add a node at the end
5: Add a node before a given node
6: Add a node after a given node
7: Delete a node from the beginning
8: Delete a node from the end
9: Delete a given node
10: Delete a node after a given node
11: Delete the entire list
12: Sort the list
13: EXIT
Enter -1 to end
Enter the data : 10
**MAIN MENU **
1: Create a list
2: Display the list
3: Add a node at the beginning
4: Add a node at the end
5: Add a node before a given node
6: Add a node after a given node
7: Delete a node from the beginning
8: Delete a node from the end
9: Delete a given node
10: Delete a node after a given node
11: Delete the entire list
12: Sort the list
13: EXIT
**MAIN MENU **
1: Create a list
2: Display the list
3: Add a node at the beginning
4: Add a node at the end
5: Add a node before a given node
6: Add a node after a given node
7: Delete a node from the beginning
8: Delete a node from the end
9: Delete a given node
10: Delete a node after a given node
11: Delete the entire list
12: Sort the list
13: EXIT
**MAIN MENU **
1: Create a list
2: Display the list
3: Add a node at the beginning
4: Add a node at the end
5: Add a node before a given node
6: Add a node after a given node
7: Delete a node from the beginning
8: Delete a node from the end
9: Delete a given node
10: Delete a node after a given node
11: Delete the entire list
12: Sort the list
13: EXIT
**MAIN MENU **
1: Create a list
2: Display the list
3: Add a node at the beginning
4: Add a node at the end
5: Add a node before a given node
6: Add a node after a given node
7: Delete a node from the beginning
8: Delete a node from the end
9: Delete a given node
10: Delete a node after a given node
11: Delete the entire list
12: Sort the list
13: EXIT
**MAIN MENU **
1: Create a list
2: Display the list
3: Add a node at the beginning
4: Add a node at the end
5: Add a node before a given node
6: Add a node after a given node
7: Delete a node from the beginning
8: Delete a node from the end
9: Delete a given node
10: Delete a node after a given node
11: Delete the entire list
12: Sort the list
13: EXIT
**MAIN MENU **
1: Create a list
2: Display the list
3: Add a node at the beginning
4: Add a node at the end
5: Add a node before a given node
6: Add a node after a given node
7: Delete a node from the beginning
8: Delete a node from the end
9: Delete a given node
10: Delete a node after a given node
11: Delete the entire list
12: Sort the list
13: EXIT
**MAIN MENU **
1: Create a list
2: Display the list
3: Add a node at the beginning
4: Add a node at the end
5: Add a node before a given node
6: Add a node after a given node
**MAIN MENU **
1: Create a list
2: Display the list
3: Add a node at the beginning
4: Add a node at the end
5: Add a node before a given node
6: Add a node after a given node
7: Delete a node from the beginning
8: Delete a node from the end
9: Delete a given node
10: Delete a node after a given node
11: Delete the entire list
12: Sort the list
13: EXIT
**MAIN MENU **
1: Create a list
**MAIN MENU **
1: Create a list
2: Display the list
3: Add a node at the beginning
4: Add a node at the end
5: Add a node before a given node
6: Add a node after a given node
7: Delete a node from the beginning
8: Delete a node from the end
9: Delete a given node
10: Delete a node after a given node
11: Delete the entire list
12: Sort the list
13: EXIT
**MAIN MENU **
1: Create a list
2: Display the list
3: Add a node at the beginning
4: Add a node at the end
5: Add a node before a given node
6: Add a node after a given node
7: Delete a node from the beginning
8: Delete a node from the end
9: Delete a given node
10: Delete a node after a given node
11: Delete the entire list
12: Sort the list
13: EXIT
**MAIN MENU **
1: Create a list
2: Display the list
3: Add a node at the beginning
4: Add a node at the end
5: Add a node before a given node
6: Add a node after a given node
7: Delete a node from the beginning
8: Delete a node from the end
9: Delete a given node
10: Delete a node after a given node
11: Delete the entire list
12: Sort the list
13: EXIT
**MAIN MENU **
1: Create a list
2: Display the list
3: Add a node at the beginning
4: Add a node at the end
5: Add a node before a given node
6: Add a node after a given node
7: Delete a node from the beginning
8: Delete a node from the end
9: Delete a given node
10: Delete a node after a given node
11: Delete the entire list
12: Sort the list
13: EXIT
**MAIN MENU **
1: Create a list
2: Display the list
3: Add a node at the beginning
4: Add a node at the end
5: Add a node before a given node
6: Add a node after a given node
7: Delete a node from the beginning
8: Delete a node from the end
9: Delete a given node
10: Delete a node after a given node
11: Delete the entire list
12: Sort the list
13: EXIT
**MAIN MENU **
1: Create a list
2: Display the list
3: Add a node at the beginning
4: Add a node at the end
5: Add a node before a given node
6: Add a node after a given node
7: Delete a node from the beginning
8: Delete a node from the end
9: Delete a given node
10: Delete a node after a given node
11: Delete the entire list
12: Sort the list
13: EXIT
10 is to be deleted next
19 is to be deleted next
30 is to be deleted next
33 is to be deleted next
99 is to be deleted next
LINKED LIST DELETED
**MAIN MENU **
1: Create a list
2: Display the list
3: Add a node at the beginning
4: Add a node at the end
5: Add a node before a given node
6: Add a node after a given node
7: Delete a node from the beginning
List is empty
**MAIN MENU **
1: Create a list
2: Display the list
3: Add a node at the beginning
4: Add a node at the end
5: Add a node before a given node
6: Add a node after a given node
7: Delete a node from the beginning
8: Delete a node from the end
9: Delete a given node
10: Delete a node after a given node
11: Delete the entire list
12: Sort the list
13: EXIT
#include <stdio.h>
struct Node {
int data;
struct Node* next;
};
struct Node* reverseList(struct Node* head)
{
struct Node *curr = head, *prev = NULL, *next;
while (curr != NULL)
{
next = curr->next;
curr->next = prev;
prev = curr;
curr = next;
}
return prev;
}
void printList(struct Node* node) {
while (node != NULL) {
printf(" %d", node->data);
node = node->next;
}
}
struct Node* createNode(int new_data) {
struct Node* new_node = (struct Node*)malloc(sizeof(struct Node));
new_node->data = new_data;
new_node->next = NULL;
return new_node;
}
int main() {
return 0;
}
OUTPUT:
#include <stdio.h>
struct Node {
int data;
struct Node* next;
};
struct Node* reverseList(struct Node* head) {
if (head == NULL || head->next == NULL)
return head;
struct Node* rest = reverseList(head->next);
head->next->next = head;
head->next = NULL;
return rest;
}
struct Node* createNode(int new_data) {
struct Node* new_node = (struct Node*)malloc(sizeof(struct Node));
new_node->data = new_data;
new_node->next = NULL;
return new_node;
}
void printList(struct Node* node) {
while (node != NULL) {
printf(" %d", node->data);
node = node->next;
}
printf("\n");
}
int main() {
return 0;
}
OUTPUT:
#include <stdio.h>
#include <stdlib.h>
struct node
{
int data; //Data part
struct node *next; //Address part
}*head;
int main()
{
int n, choice;
if(head != NULL)
{
prevNode = head;
curNode = head->next;
head = head->next;
prevNode->next = NULL; // Make first node as last node
while(head != NULL)
{
head = head->next;
curNode->next = prevNode;
prevNode = curNode;
curNode = head;
}
{
printf(" %d\t", temp->data); // Print the data of current node
temp = temp->next; // Move to next node
DATA STRUCTURES LABORATORY
DATE: EXPNO: PAGE NO: 47
}
}
}
A C program to create a doubly linked list and perform insertions and deletions in all cases.
DATA STRUCTURES LABORATORY
DATE: EXPNO: PAGE NO: 48
#include<stdio.h>
#include<conio.h>
#include<stdlib.h>
struct node {
int data;
};
int main()
int option;
DATA STRUCTURES LABORATORY
DATE: EXPNO: PAGE NO: 49
clrscr();
do
scanf("%d", &option);
switch(option)
break;
DATA STRUCTURES LABORATORY
DATE: EXPNO: PAGE NO: 50
break; case 3:
start = insert_beg(start);
break;
break;
break;
break;
break;
break;
break;
break;
break;
}
DATA STRUCTURES LABORATORY
DATE: EXPNO: PAGE NO: 51
while(option != 12);
getch();
return 0;
int num;
scanf("%d", &num);
while(num != –1)
if(start == NULL)
start = new_node;
else {
ptr=start;
DATA STRUCTURES LABORATORY
DATE: EXPNO: PAGE NO: 52
new_node–>data=num;
while(ptr–>next!=NULL)
ptr = ptr–>next;
ptr–>next = new_node;
new_node–>prev=ptr;
new_node–>next=NULL;
scanf("%d", &num);
return start;
ptr=start;
while(ptr!=NULL)
return start;
DATA STRUCTURES LABORATORY
DATE: EXPNO: PAGE NO: 53
int num;
scanf("%d", &num);
int num;
scanf("%d", &num);
ptr=start;
DATA STRUCTURES LABORATORY
DATE: EXPNO: PAGE NO: 54
return start;
scanf("%d", &num);
printf("\n Enter the value before which the data has to be inserted : ");
scanf("%d", &val);
ptr = start;
return start;
scanf("%d", &num);
printf("\n Enter the value after which the data has to be inserted : ");
scanf("%d", &val);
ptr = start;
return start;
ptr = start;
free(ptr);
return start;
ptr = start;
free(ptr);
return start;
int val;
printf("\n Enter the value after which the node has to deleted : ");
scanf("%d", &val);
DATA STRUCTURES LABORATORY
DATE: EXPNO: PAGE NO: 57
ptr = start;
free(temp);
return start;
int val;
printf("\n Enter the value before which the node has to deleted : ");
scanf("%d", &val);
ptr = start;
if(temp == start)
start = delete_beg(start);
else
{
DATA STRUCTURES LABORATORY
DATE: EXPNO: PAGE NO: 58
free(temp);
return start;
while(start != NULL)
start = delete_beg(start);
return start;
OUTPUT:
**MAIN MENU **
1: Create a list
2: Display the list
3: Add a node at the beginning
4: Add a node at the end
5: Add a node before a given node
6: Add a node after a given node
7: Delete a node from the beginning
8: Delete a node from the end
9: Delete a node before a given node
10: Delete a node after a given node
11: Delete the entire list
12: EXIT
Enter -1 to end
Enter the data : 1
1: Create a list
2: Display the list
3: Add a node at the beginning
4: Add a node at the end
5: Add a node before a given node
6: Add a node after a given node
7: Delete a node from the beginning
8: Delete a node from the end
9: Delete a node before a given node
10: Delete a node after a given node
11: Delete the entire list
12: EXIT
**MAIN MENU **
1: Create a list
2: Display the list
3: Add a node at the beginning
4: Add a node at the end
5: Add a node before a given node
6: Add a node after a given node
7: Delete a node from the beginning
8: Delete a node from the end
9: Delete a node before a given node
10: Delete a node after a given node
11: Delete the entire list
12: EXIT
1: Create a list
2: Display the list
3: Add a node at the beginning
4: Add a node at the end
5: Add a node before a given node
6: Add a node after a given node
7: Delete a node from the beginning
8: Delete a node from the end
9: Delete a node before a given node
10: Delete a node after a given node
11: Delete the entire list
12: EXIT
**MAIN MENU **
1: Create a list
2: Display the list
3: Add a node at the beginning
4: Add a node at the end
5: Add a node before a given node
6: Add a node after a given node
7: Delete a node from the beginning
8: Delete a node from the end
9: Delete a given node before a given node
10: Delete a node after a given node
11: Delete the entire list
12: EXIT
**MAIN MENU **
1: Create a list
2: Display the list
3: Add a node at the beginning
4: Add a node at the end
5: Add a node before a given node
6: Add a node after a given node
7: Delete a node from the beginning
8: Delete a node from the end
9: Delete a node before a given node
10: Delete a node after a given node
11: Delete the entire list
12: EXIT
**MAIN MENU **
1: Create a list
2: Display the list
3: Add a node at the beginning
4: Add a node at the end
5: Add a node before a given node
6: Add a node after a given node
7: Delete a node from the beginning
8: Delete a node from the end
9: Delete a node before a given node
10: Delete a node after a given node
11: Delete the entire list
12: EXIT
**MAIN MENU **
1: Create a list
2: Display the list
3: Add a node at the beginning
4: Add a node at the end
5: Add a node before a given node
6: Add a node after a given node
7: Delete a node from the beginning
8: Delete a node from the end
9: Delete a node before a given node
10: Delete a node after a given node
11: Delete the entire list
12: EXIT
**MAIN MENU **
1: Create a list
2: Display the list
3: Add a node at the beginning
4: Add a node at the end
5: Add a node before a given node
6: Add a node after a given node
7: Delete a node from the beginning
8: Delete a node from the end
9: Delete a node before a given node
10: Delete a node after a given node
11: Delete the entire list
12: EXIT
Enter your option : 6
**MAIN MENU **
1: Create a list
2: Display the list
3: Add a node at the beginning
4: Add a node at the end
5: Add a node before a given node
6: Add a node after a given node
7: Delete a node from the beginning
8: Delete a node from the end
9: Delete a node before a given node
10: Delete a node after a given node
11: Delete the entire list
12: EXIT
**MAIN MENU **
1: Create a list
2: Display the list
3: Add a node at the beginning
4: Add a node at the end
5: Add a node before a given node
6: Add a node after a given node
7: Delete a node from the beginning
8: Delete a node from the end
9: Delete a node before a given node
10: Delete a node after a given node
**MAIN MENU **
1: Create a list
2: Display the list
3: Add a node at the beginning
4: Add a node at the end
5: Add a node before a given node
6: Add a node after a given node
7: Delete a node from the beginning
8: Delete a node from the end
9: Delete a node before a given node
10: Delete a node after a given node
11: Delete the entire list
12: EXIT
**MAIN MENU **
1: Create a list
2: Display the list
3: Add a node at the beginning
4: Add a node at the end
5: Add a node before a given node
6: Add a node after a given node
7: Delete a node from the beginning
8: Delete a node from the end
9: Delete a node before a given node
10: Delete a node after a given node
11: Delete the entire list
12: EXIT
**MAIN MENU **
1: Create a list
2: Display the list
3: Add a node at the beginning
4: Add a node at the end
5: Add a node before a given node
6: Add a node after a given node
7: Delete a node from the beginning
8: Delete a node from the end
9: Delete a node before a given node
10: Delete a node after a given node
11: Delete the entire list
12: EXIT
**MAIN MENU **
1: Create a list
2: Display the list
3: Add a node at the beginning
4: Add a node at the end
5: Add a node before a given node
6: Add a node after a given node
7: Delete a node from the beginning
8: Delete a node from the end
9: Delete a node before a given node
10: Delete a node after a given node
11: Delete the entire list
12: EXIT
**MAIN MENU **
1: Create a list
2: Display the list
3: Add a node at the beginning
4: Add a node at the end
5: Add a node before a given node
6: Add a node after a given node
7: Delete a node from the beginning
8: Delete a node from the end
9: Delete a node before a given node
10: Delete a node after a given node
11: Delete the entire list
12: EXIT
Enter your option : 11
1 is to be deleted next
1 is to be deleted next
3 is to be deleted next
33 is to be deleted next
9 is to be deleted next
DOUBLY LINKED LIST DELETED
**MAIN MENU **
1: Create a list
2: Display the list
3: Add a node at the beginning
4: Add a node at the end
5: Add a node before a given node
6: Add a node after a given node
7: Delete a node from the beginning
8: Delete a node from the end
9: Delete a given node
10: Delete a node after a given node
11: Delete the entire list
12: Sort the list
13: EXIT
A C program to create a circular linked list perform insertion and deletion at the beginning
and end of the list.
#include<stdio.h>
#include<conio.h>
#include<stdlib.h>
struct node
int data;
};
int main()
int option;
clrscr();
do {
printf("\n 9: EXIT");
scanf("%d", &option);
switch(option)
break;
break;
break;
break;
break;
break;
break;
break;
while(option !=9);
getch();
return 0;
int num;
scanf("%d", &num);
DATA STRUCTURES LABORATORY
DATE: EXPNO: PAGE NO: 73
while(num!=–1)
if(start == NULL)
start = new_node;
else
ptr = start;
scanf("%d", &num);
return start;
ptr=start;
return start;
int num;
scanf("%d", &num);
ptr = start;
start = new_node;
return start;
int num;
scanf("%d", &num);
ptr = start;
return start;
ptr = start;
DATA STRUCTURES LABORATORY
DATE: EXPNO: PAGE NO: 76
free(start);
return start;
ptr = start;
preptr = ptr;
free(ptr);
return start;
int val;
printf("\n Enter the value after which the node has to deleted : ");
scanf("%d", &val);
ptr = start;
preptr = ptr;
preptr = ptr;
if(ptr == start)
free(ptr);
return start;
ptr = start;
start = delete_end(start);
free(start);
DATA STRUCTURES LABORATORY
DATE: EXPNO: PAGE NO: 78
return start;
OUTPUT:
**MAIN MENU **
1: Create a list
2: Display the list
3: Add a node at the beginning
4: Add a node at the end
5: Delete a node from the beginning
6: Delete a node from the end
7: Delete a node after a given node
8: Delete the entire list
9:EXIT
Enter -1 to end
Enter the data : 99
**MAIN MENU **
1: Create a list
2: Display the list
3: Add a node at the beginning
4: Add a node at the end
5: Delete a node from the beginning
6: Delete a node from the end
7: Delete a node after a given node
8: Delete the entire list
9:EXIT
**MAIN MENU **
1: Create a list
2: Display the list
3: Add a node at the beginning
4: Add a node at the end
5: Delete a node from the beginning
6: Delete a node from the end
7: Delete a node after a given node
8: Delete the entire list
9:EXIT
**MAIN MENU **
1: Create a list
2: Display the list
3: Add a node at the beginning
4: Add a node at the end
5: Delete a node from the beginning
6: Delete a node from the end
7: Delete a node after a given node
8: Delete the entire list
9:EXIT
**MAIN MENU **
1: Create a list
2: Display the list
3: Add a node at the beginning
4: Add a node at the end
5: Delete a node from the beginning
6: Delete a node from the end
7: Delete a node after a given node
8: Delete the entire list
9:EXIT
**MAIN MENU **
1: Create a list
2: Display the list
3: Add a node at the beginning
4: Add a node at the end
5: Delete a node from the beginning
6: Delete a node from the end
7: Delete a node after a given node
8: Delete the entire list
9:EXIT
**MAIN MENU **
1: Create a list
2: Display the list
3: Add a node at the beginning
4: Add a node at the end
5: Delete a node from the beginning
6: Delete a node from the end
7: Delete a node after a given node
8: Delete the entire list
9:EXIT
**MAIN MENU **
1: Create a list
2: Display the list
3: Add a node at the beginning
4: Add a node at the end
5: Delete a node from the beginning
**MAIN MENU **
1: Create a list
2: Display the list
3: Add a node at the beginning
4: Add a node at the end
5: Delete a node from the beginning
6: Delete a node from the end
7: Delete a node after a given node
8: Delete the entire list
9:EXIT
**MAIN MENU **
1: Create a list
2: Display the list
3: Add a node at the beginning
4: Add a node at the end
5: Delete a node from the beginning
6: Delete a node from the end
7: Delete a node after a given node
8: Delete the entire list
9:EXIT
**MAIN MENU **
1: Create a list
2: Display the list
3: Add a node at the beginning
4: Add a node at the end
5: Delete a node from the beginning
6: Delete a node from the end
7: Delete a node after a given node
8: Delete the entire list
9:EXIT
**MAIN MENU **
1: Create a list
2: Display the list
3: Add a node at the beginning
4: Add a node at the end
5: Delete a node from the beginning
6: Delete a node from the end
7: Delete a node after a given node
8: Delete the entire list
9:EXIT
99 is to be deleted next
78 is to be deleted next
44 is to be deleted next
CIRCULAR LINKED LIST DELETED
**MAIN MENU **
1: Create a list
2: Display the list
3: Add a node at the beginning
4: Add a node at the end
5: Delete a node from the beginning
6: Delete a node from the end
7: Delete a node after a given node
8: Delete the entire list
9:EXIT
#include<stdio.h>
#include<conio.h>
#include<stdlib.h>
#define MAX 3
do
printf("\n 1. PUSH");
printf("\n 2. POP");
printf("\n 3. PEEK");
printf("\n 4. DISPLAY");
printf("\n 5. EXIT");
scanf("%d", &option);
DATA STRUCTURES LABORATORY
DATE: EXPNO: PAGE NO: 86
switch(option)
scanf("%d", &val);
push(st, val);
break;
if(val != -1)
break;
if(val != -1)
break;
while(option != 5);
return 0;
if(top == MAX-1)
else
top++;
st[top] = val;
int val;
if(top == -1)
return -1;
else
{
DATA STRUCTURES LABORATORY
DATE: EXPNO: PAGE NO: 88
val = st[top];
top--;
return val;
int i;
if(top == -1)
else
for(i=top;i>=0;i--)
printf("\n %d",st[i]);
printf("\n");
if(top == -1)
return -1;
DATA STRUCTURES LABORATORY
DATE: EXPNO: PAGE NO: 89
else
return (st[top]);
OUTPUT:
**MAIN MENU**
1. PUSH
2. POP
3. PEEK
4. DISPLAY
5. EXIT
**MAIN MENU**
1. PUSH 2.
2. POP
3. PEEK
4. DISPLAY
5. EXIT
**MAIN MENU**
1. PUSH
2. POP
3. PEEK
4. DISPLAY
5. EXIT
**MAIN MENU**
1. PUSH
2. POP
3. PEEK
4. DISPLAY
**MAIN MENU**
1. PUSH
2. POP
3. PEEK
4. DISPLAY
5. EXIT
3
DATA STRUCTURES LABORATORY
DATE: EXPNO: PAGE NO: 91
**MAIN MENU**
1. PUSH
2. POP
3. PEEK
4. DISPLAY
5. EXIT
**MAIN MENU**
1. PUSH
2. POP
3. PEEK
4. DISPLAY
5. EXIT
**MAIN MENU**
1. PUSH
2. POP
3. PEEK
4. DISPLAY
5. EXIT
DATA STRUCTURES LABORATORY
DATE: EXPNO: PAGE NO: 92
**MAIN MENU**
1. PUSH
2. POP
3. PEEK
4. DISPLAY
5. EXIT
#include<stdio.h>
#include<conio.h>
#include<stdlib.h>
struct stack
int data;
};
int main()
do
printf("\n 1. PUSH");
printf("\n 2. POP");
printf("\n 3. PEEK");
DATA STRUCTURES LABORATORY
DATE: EXPNO: PAGE NO: 94
printf("\n 4. DISPLAY");
printf("\n 5. EXIT");
scanf("%d", &option);
switch(option)
scanf("%d", &val);
break;
break;
if (val != -1)
else
break;
break;
while(option != 5);
DATA STRUCTURES LABORATORY
DATE: EXPNO: PAGE NO: 95
return 0;
if(top == NULL)
top = ptr;
else
top = ptr;
return top;
ptr = top;
DATA STRUCTURES LABORATORY
DATE: EXPNO: PAGE NO: 96
if(top == NULL)
else
while(ptr != NULL)
return top;
ptr = top;
if(top == NULL)
else
printf("\n The value being deleted is: %d", ptr -> data);
free(ptr);
DATA STRUCTURES LABORATORY
DATE: EXPNO: PAGE NO: 97
return top;
if(top==NULL)
return -1;
else {
return top->data;
OUTPUT:
*****MAIN MENU*****
1. PUSH
2. POP
3. PEEK
4. DISPLAY
5. EXIT
*****MAIN MENU*****
1. PUSH
2. POP
3. PEEK
DATA STRUCTURES LABORATORY
DATE: EXPNO: PAGE NO: 98
4. DISPLAY
5. EXIT
*****MAIN MENU*****
1. PUSH
2. POP
3. PEEK
4. DISPLAY
5. EXIT
*****MAIN MENU*****
1. PUSH
2. POP
3. PEEK
4. DISPLAY
5. EXIT
*****MAIN MENU*****
1. PUSH
2. POP
DATA STRUCTURES LABORATORY
DATE: EXPNO: PAGE NO: 99
3. PEEK
4. DISPLAY
5. EXIT
10
*****MAIN MENU*****
1. PUSH
2. POP
3. PEEK
4. DISPLAY
5. EXIT
*****MAIN MENU*****
1. PUSH
2. POP
3. PEEK
4. DISPLAY
5. EXIT
*****MAIN MENU*****
1. PUSH
2. POP
3. PEEK
4. DISPLAY
5. EXIT
10
*****MAIN MENU*****
1. PUSH
2. POP
3. PEEK
4. DISPLAY
5. EXIT
#include
#include
#include
float st[MAX];
int top=–1;
int main()
float val;
char exp[100];
clrscr();
gets(exp);
val = evaluatePostfixExp(exp);
getch();
return 0;
int i=0;
while(exp[i] != '\0')
if(isdigit(exp[i]))
push(st, (float)(exp[i]–'0'));
else
op2 = pop(st);
op1 = pop(st);
switch(exp[i])
break;
break;
break;
break;
break;
DATA STRUCTURES LABORATORY
DATE: EXPNO: PAGE NO: 103
push(st, value);
i++;
return(pop(st));
if(top==MAX–1)
else
top++;
st[top]=val;
float val=–1;
if(top==–1)
else
DATA STRUCTURES LABORATORY
DATE: EXPNO: PAGE NO: 104
val=st[top];
top––;
return val;
OUTPUT:
#include
#include
#include
int stk[MAX];
void push(char);
char pop();
void main()
char exp[MAX],temp;
int i, flag=1;
clrscr();
gets(exp);
for(i=0;i<strlen(exp);i++)
push(exp[i]);
if(top == –1)
flag=0;
else
DATA STRUCTURES LABORATORY
DATE: EXPNO: PAGE NO: 106
temp=pop();
flag=0;
flag=0;
flag=0;
if(top>=0)
flag=0;
if(flag==1)
else
void push(char c)
if(top == (MAX–1))
printf("Stack Overflow\n");
else
{
DATA STRUCTURES LABORATORY
DATE: EXPNO: PAGE NO: 107
top=top+1;
stk[top] = c;
char pop()
if(top == –1)
else
return(stk[top––]);
OUTPUT:
valid expression
#include<stdio.h>
#include<stdlib.h>
#define MAX 10
int queue[MaX];
void insert(void);
int delete_element(void);
int peek(void);
void display(void);
int main()
do
printf(“\n 3. Peek”);
printf(“\n 5. EXIT”);
scanf(“%d”, &option);
DATA STRUCTURES LABORATORY
DATE: EXPNO: PAGE NO: 109
switch(option)
case 1: insert();
break;
if (val != -1)
break;
if (val != -1)
break;
case 4: display();
break;
while(option != 5);
getch();
return 0;
void insert()
int num;
DATA STRUCTURES LABORATORY
DATE: EXPNO: PAGE NO: 110
scanf(“%d”, &num);
if(rear == MAX-1)
printf(“\n OVERFLOW”);
front = rear = 0;
else rear++;
queue[rear] = num;
int delete_element()
int val;
if(front == -1 || front>rear)
printf(“\n UNDERFLOW”);
return -1;
else
val = queue[front];
front++;
return val;
int peek()
if(front==-1 || front>rear)
return -1;
else
return queue[front];
void display()
int i;
printf(“\n”);
else
{
DATA STRUCTURES LABORATORY
DATE: EXPNO: PAGE NO: 112
OUTPUT:
1. Insert an element
2. Delete an element
3. Peek
1. Insert an element
2. Delete an element
3. Peek
1. Insert an element
2. Delete an element
3. Peek
DATA STRUCTURES LABORATORY
DATE: EXPNO: PAGE NO: 113
1. Insert an element
2. Delete an element
3. Peek
50
60
70
1. Insert an element
2. Delete an element
3. Peek
5. EXIT
#include<stdio.h>
#include<conio.h>
#include<stdlib.h>
struct node
int data;
};
struct queue
};
int main()
create_queue(q);
clrscr();
do
printf("\n 1. INSERT");
printf("\n 2. DELETE");
printf("\n 3. PEEK");
printf("\n 4. DISPLAY");
printf("\n 5. EXIT");
scanf("%d", &option);
switch(option)
scanf("%d", &val);
q = insert(q,val);
break;
case 2: q = delete_element(q);
break;
if(val! = –1)
break;
case 4: q = display(q);
break;
while(option != 5);
getch();
return 0;
else
return q;
if(ptr == NULL)
else
printf("\n");
return q;
printf("\n UNDERFLOW");
else
free(ptr);
return q;
if(q->front==NULL)
{
DATA STRUCTURES LABORATORY
DATE: EXPNO: PAGE NO: 119
return –1;
else
return q->front->data;
OUTPUT:
*****MAIN MENU*****
1. INSERT
2. DELETE
3. PEEK
4. DISPLAY
5. EXIT
QUEUE IS EMPTY
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
int job_id;
char description[100];
} PrintJob;
typedef struct {
PrintJob* front;
PrintJob* rear;
} PrinterQueue;
new_job->job_id = job_id;
strcpy(new_job->description, description);
new_job->next = NULL;
return new_job;
if (queue->rear == NULL) {
return;
queue->rear->next = new_job;
queue->rear = new_job;
if (queue->front == NULL) {
return;
queue->front = queue->front->next;
if (queue->front == NULL) {
queue->rear = NULL;
DATA STRUCTURES LABORATORY
DATE: EXPNO: PAGE NO: 122
free(temp);
if (queue->front == NULL) {
return;
temp = temp->next;
int main() {
PrinterQueue queue;
init_printer_queue(&queue);
char description[100];
while (1) {
printf("4. Exit\n");
scanf("%d", &choice);
switch (choice) {
case 1:
scanf("%d", &job_id);
break;
case 2:
dequeue(&queue);
break;
case 3:
display_queue(&queue);
break;
DATA STRUCTURES LABORATORY
DATE: EXPNO: PAGE NO: 124
case 4:
printf("Exiting...\n");
exit(0);
default:
return 0;
OUTPUT DATE:
4. Exit
4. Exit
DATA STRUCTURES LABORATORY
DATE: EXPNO: PAGE NO: 125
4. Exit
4. Exit
4. Exit
DATA STRUCTURES LABORATORY
DATE: EXPNO: PAGE NO: 126
Exiting...
RESULT: c programme for creating simple printer queue system is executed successfully
#include<stdio.h>
#include<conio.h>
#include<stdlib.h>
struct node
int player_id;
};
int main()
int n, k, i, count;
clrscr();
scanf("%d", &n);
printf("\n Enter the value of k (every kth player gets eliminated): ");
scanf("%d", &k);
start–>player_id = 1;
ptr = start;
{
DATA STRUCTURES LABORATORY
DATE: EXPNO: PAGE NO: 128
ptr–>next = new_node;
new_node–>player_id = i;
new_node–>next=start;
ptr=new_node;
ptr = ptr–>next;
ptr–>next = ptr–>next–>next;
getch();
return 0;
OUTPUT:
Enter the value of k( every kth player gets eliminated) the Winner is player 3
RESULT:
#include
#include
#include
#include
char st[MAX];
int top=–1;
int getPriority(char);
int main()
clrscr();
gets(infix);
reverse(infix);
strcpy(postfix, "");
InfixtoPostfix(temp, postfix);
puts(postfix);
strcpy(temp,"");
reverse(postfix);
puts(temp);
getch();
return 0;
len=strlen(str);
j=len–1;
while(j>= 0)
if (str[j] == '(')
temp[i] = ')';
temp[i] = '(';
else
temp[i] = str[j];
i++, j––;
}
DATA STRUCTURES LABORATORY
DATE: EXPNO: PAGE NO: 131
temp[i] = '\0';
char temp;
strcpy(target, "");
while(source[i]!= '\0')
if(source[i]=='(')
push(st, source[i]);
i++;
target[j] = pop(st);
j++;
if(top==–1)
{
DATA STRUCTURES LABORATORY
DATE: EXPNO: PAGE NO: 132
exit(1);
temp = pop(st);
i++;
j++;
i++;
else if( source[i] == '+' || source[i] == '–' || source[i] == '*' || source[i] == '/' || source[i] ==
'%')
target[j] = pop(st);
j++;
push(st, source[i]);
i++;
else
exit(1);
target[j] = pop(st);
j++;
target[j]='\0';
return 1;
return 0;
if(top==MAX–1)
else
top++;
st[top] = val;
if(top==–1)
else
val=st[top];
top––;
return val;
OUTPUT:
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
#define MAX 10
int stack[MAX];
void push(char);
void pop();
void main()
int i, choice;
char s[MAX], b;
scanf("%s", s);
b = s[i];
push(b);
if (stack[top] == stack[front])
DATA STRUCTURES LABORATORY
DATE: EXPNO: PAGE NO: 136
pop();
front++;
else
break;
if ((strlen(s) / 2) == front)
front = 0;
top = -1;
exit(0);
void push(char a)
top++;
stack[top] = a;
void pop()
top--;
OUTPUT:
MENU
---------------------------
[Link]
---------------------------
Choose operation : 1
'amma' is palindrome.
Choose operation : 1
Choose operation : 1
Choose operation : 1
'madam' is palindrome.
Choose operation : 2
DATA STRUCTURES LABORATORY
DATE: EXPNO: PAGE NO: 138
RESULT: c programme for checking whether a string is a palindrome or not using stacks is
executed successfully.
Write a c program to Implement a stack or queue to perform comparison and check for
symmetry.
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
#define true 1
#define false 0
struct Stack {
int top;
unsigned capacity;
char* array;
};
stack->capacity = capacity;
stack->top = -1;
return stack;
if (isFull(stack))
return;
stack->array[++stack->top] = item;
if (isEmpty(stack))
return '\0';
return stack->array[stack->top--];
int len;
int i;
len = strlen(string);
stack = createStack(len);
push(stack, string[i]);
if (string[i] != pop(stack)) {
free(stack->array);
free(stack);
return false;
free(stack->array);
free(stack);
return true;
int main() {
char string[100];
scanf("%s", string);
if (checkSymmetry(string)) {
} else {
return 0;
OUTPUT:
RESULT:
Hence the C program to check whether the given string symmetric or not is executed
successfully.
#include<stdio.h>
#include<conio.h>
#include<stdlib.h>
struct node {
int data;
};
int main()
clrscr();
do
scanf("%d", &option);
switch(option)
scanf("%d", &val);
break;
preorderTraversal(tree);
break;
inorderTraversal(tree);
break;
postorderTraversal(tree);
break;
break;
break;
DATA STRUCTURES LABORATORY
DATE: EXPNO: PAGE NO: 146
scanf("%d", &val);
break;
break;
break;
break;
break;
break;
break;
while(option!=14);
getch();
return 0;
tree = NULL;
ptr–>data = val;
ptr–>left = NULL;
ptr–>right = NULL;
if(tree==NULL)
tree=ptr;
tree–>left=NULL;
tree–>right=NULL;
Else
parentptr=NULL;
nodeptr=tree;
while(nodeptr!=NULL)
{
DATA STRUCTURES LABORATORY
DATE: EXPNO: PAGE NO: 148
parentptr=nodeptr;
if(valdata) nodeptr=nodeptr–>left;
return tree;
if(tree != NULL)
printf("%d\t", tree–>data);
preorderTraversal(tree–>left);
preorderTraversal(tree–>right);
if(tree != NULL)
inorderTraversal(tree->left);
DATA STRUCTURES LABORATORY
DATE: EXPNO: PAGE NO: 149
printf("%d\t", tree->data);
inorderTraversal(tree->right);
if(tree != NULL)
postorderTraversal(tree->left);
postorderTraversal(tree->right);
printf("%d\t", tree->data);
return tree;
else
return tree;
else
return findLargestElement(tree->right);
if(tree–>left==NULL)
return(tree);
parent = tree;
cur = tree–>left;
parent = cur;
if(cur == NULL)
return(tree);
DATA STRUCTURES LABORATORY
DATE: EXPNO: PAGE NO: 151
if(cur–>left == NULL)
ptr = cur–>right;
ptr = cur–>left;
else
psuc = cur;
cur = cur–>left;
while(suc–>left!=NULL)
if(cur==psuc)
// Situation 1
suc–>left = cur–>right;
Else
// Situation 2
suc–>left = cur–>left;
DATA STRUCTURES LABORATORY
DATE: EXPNO: PAGE NO: 152
psuc–>left = suc–>right;
suc–>right = cur–>right;
ptr = suc;
if(parent–>left == cur)
parent–>left=ptr;
else parent–>right=ptr;
free(cur);
return tree;
if(tree==NULL)
return 0;
if(tree==NULL)
return 0;
return 1;
return 0;
if(tree==NULL)
return 0;
else
leftheight = Height(tree–>left);
rightheight = Height(tree–>right);
else
if(tree!=NULL)
mirrorImage(tree–>left);
mirrorImage(tree–>right);
ptr=tree–>left;
ptr–>left = ptr–>right;
tree–>right = ptr;
if(tree!=NULL)
deleteTree(tree–>left);
deleteTree(tree–>right);
free(tree);
OUTPUT:
**MAIN MENU**
1. Insert Element
2. Preorder Traversal
3. Inorder Traversal
4. Postorder Traversal
7. Delete an element
14. Exit
2 1 4
RESULT:
Hence the C program to implement BST using linked list and traversal is executed
successfully.
#include<stdio.h>
#include<conio.h>
void insert_val();
void delete_val();
void search_val();
void display();
int main()
int option;
clrscr();
ht[i] = –1;
do
switch (option)
case 1: insert_val();
break;
DATA STRUCTURES LABORATORY
DATE: EXPNO: PAGE NO: 158
case 2: delete_val();
break;
case 4: search_val();
break;
case 3: display();
break;
break;
while (option!=4)
getch();
return 0;
void insert_val()
int val, f = 0;
key = ( val % 10 ) – 1;
if ( ht[key] == –1 )
ht[key] = val;
DATA STRUCTURES LABORATORY
DATE: EXPNO: PAGE NO: 159
if ( ht[i] == –1 )
ht[i] = val;
break;
if ( ht[i] == –1 )
ht[i] = val;
break;
void display()
DATA STRUCTURES LABORATORY
DATE: EXPNO: PAGE NO: 160
void search_val()
key = ( val % 10 ) – 1;
flag = 1;
else
if(ht[i] == val)
flag = 1;
key = i;
break;
}
DATA STRUCTURES LABORATORY
DATE: EXPNO: PAGE NO: 161
if (flag == 0)
if (ht[ i ] == val)
flag = 1;
key = i;
break;
if (flag == 1)
found=1;
printf( "\nThe item searched was not found in the hash table" );
void delete_val()
DATA STRUCTURES LABORATORY
DATE: EXPNO: PAGE NO: 162
search_val();
if (found==1)
if ( key != –1 )
Output : Enter key and value to insert into the hash table: 3 56
Value of Key 3 = 56
Value of Key 3 = 56
#include <stdio.h>
#include <stdlib.h>
struct Node {
int key;
int value;
};
newNode->key = key;
newNode->value = value;
newNode->next = NULL;
return newNode;
newNode->next = hashTable[index];
hashTable[index] = newNode;
if (current->key == key) {
current = current->next;
int main() {
char choice;
do
scanf("%d", &key);
if (foundValue != -1) {
} else {
return 0;
OUTPUT :