0% found this document useful (0 votes)
11 views

Data structure

Lab programs

Uploaded by

fathimahiba8963
Copyright
© © All Rights Reserved
We take content rights seriously. If you suspect this is your content, claim it here.
Available Formats
Download as PDF, TXT or read online on Scribd
0% found this document useful (0 votes)
11 views

Data structure

Lab programs

Uploaded by

fathimahiba8963
Copyright
© © All Rights Reserved
We take content rights seriously. If you suspect this is your content, claim it here.
Available Formats
Download as PDF, TXT or read online on Scribd
You are on page 1/ 12

1.

Stack
#include <stdio.h>
#include <stdlib.h>
#define MAX 5
int top = -1, a[MAX];
void push();
void pop();
void show();
int main()
{
int choice;
while (1)
{
printf("\n1.Push the element\n2.Pop the element\n3.Show\n4.End");
printf("\n\nEnter the choice: ");
scanf("%d", &choice);
switch (choice)
{
case 1:
push();
break;
case 2:
pop();
break;
case 3:
show();
break;
case 4:
exit(0);
default:
printf("\nInvalid choice!!");
}
}
}

void push()
{
int x;
if (top == MAX - 1)
printf("\nOverflow!!");
else
{
printf("\nEnter the element to be added onto the stack: ");
scanf("%d", &x);
top++;
a[top] = x;
}
}
void pop()
{
if (top == -1)
printf("Underflow!!\n");
else
{
printf("\nPopped element: %d", a[top]);
--top;
}
}
void show()
{
if (top == -1)
printf("Stack is Empty!!\n");
else
{
printf("\nElements present in the stack: \n");
for (int i = top; i >= 0; i--)
printf("%d\n",a[i]);
}
}

2. Queue
#include <stdio.h>
#include<stdlib.h>
#define SIZE 10
void enqueue();
void dequeue();
void display();
int arr[SIZE];
int rear = - 1;
int front = - 1;
int main()
{
int choice;
while (1)
{
printf("\n1.Insert element to queue \n");
printf("2.Delete element from queue \n");
printf("3.Display all elements of queue \n");
printf("4.Quit \n");
printf("Enter your choice : ");
scanf("%d", &choice);
switch (choice)
{
case 1:
enqueue();
break;
case 2:
dequeue();
break;
case 3:
display();
break;
case 4:
exit(1);
default:
printf("Wrong choice \n");
}
}
}
void enqueue()
{
int item;
if (rear == SIZE - 1)
printf("Queue Overflow \n");
else
{
if (front == - 1)
front = 0;
printf("Enter the element to be inserted: ");
scanf("%d",&item);
rear = rear + 1;
arr[rear] = item;
}
}

void dequeue()
{
if (front == - 1 || front > rear)
{
printf("Queue Underflow \n");
return ;
}
else
{
printf("Element deleted from queue is : %d\n", arr[front]);
front = front + 1;
}
}
void display()
{
if (front == - 1 || front > rear)
printf("Queue is empty \n");
else
{
printf("Queue is : \n");
for (int i = front; i <= rear; i++)
printf("%d ", arr[i]);
printf("\n");
}
}

3. Infix to Postfix
#include<stdio.h>
#include<ctype.h>
#include<string.h>

char stack[20];
int top=-1;

void push(char x)
{
stack[++top]=x;
}
char pop()
{
if(top==-1)
return -1;
else
return stack[top--];
}
int priority(char x)
{
if(x=='(')
return 0;
if(x=='+' || x=='-')
return 1;
if(x=='*' || x=='/')
return 2;
if(x=='$')
return 3;
}
int main()
{
char exp[20];
char *e,x;
int op=0,opr=0;
printf("Enter the Infix Expression:: ");
scanf("%s", exp);
for (int i = 0; i < strlen(exp); i++)
{
if(isalnum (exp[i]))
op++; //counting number of operands
else
opr++; //counting number of operators
}
if(opr != (op-1))
printf("Invalid Expression!");
else
{
e=exp;
printf("\nPostfix Expression: ");
while(*e!='\0')
{
if(isalnum(*e))
printf("%c", *e);
else if(*e=='(')
push(*e);
else if(*e==')')
{
while((x=pop()) != '(')
printf("%c", x);
}
else
{
while(priority(stack[top])>=priority(*e))
printf("%c", pop());
push(*e);
}
e++;
}
while(top!=-1)
printf("%c", pop());
}
printf("\n");
}
4. Postfix Evaluation

#include<stdio.h>
#include<ctype.h>
int stack[20];
int top=-1;
void push(int x)
{
stack[++top]=x;
}
int pop()
{
return stack[top--];
}
int main()
{
char exp[20];
char *e;
int n1,n2,n3,num;
printf("\nEnter the postfix expression\n");
scanf("%s",exp);
e=exp;
while(*e!='\0')
{
if(isdigit(*e))
{
num=*e-48;
push(num);
}
else
{
n1=pop();
n2=pop();
switch(*e)
{
case '+':
n3=n2+n1;
break;
case '-':
n3=n2-n1;
break;
case '*':
n3=n2*n1;
break;
case '/':
n3=n2/n1;
break;
}
push(n3);
}
e++;
}
printf("the result of expression %s=%d",exp,pop());
return 0;
}

5. Insertion Sort
#include <stdio.h>
void insertionSort(int a[], int n)
{
// Starting from the second element
for (int i = 1; i < n; i++)
{
int key = a[i];
int j = i - 1;
/* Move elements of arr[0..i-1], that are greater than key, to one position to
the right of their current position */
while (j >= 0 && a[j] > key)
{
a[j + 1] = a[j];
j = j - 1;
}
// Move the key to its correct position
a[j + 1] = key;
}
}

int main()
{
int n, i;
printf("Enter the number of elements: ");
scanf("%d", &n);
int a[n];
printf("Enter the array elements:\n");
for (i = 0; i < n; i++)
{
scanf("%d", &a[i]);
}
insertionSort(a, n);
printf("\nSorted array: \n");
for (i = 0; i < n; i++)
{
printf("%d ", a[i]);
}
return 0;
}
6. Seleection Sort

#include <stdio.h>
void selectionSort(int a[], int n)
{
int i, j, min, temp;
for (i = 0; i < n-1; i++)
{
min = i;
for (j = i+1; j < n; j++)
{
if (a[j] < a[min])
{
min = j;
}
}
temp = a[min];
a[min] = a[i];
a[i] = temp;
}
}

int main()
{
int n, i;
printf("Enter the number of elements: ");
scanf("%d", &n);
int a[n];
printf("Enter the array elements:\n");
for (i = 0; i < n; i++)
{
scanf("%d", &a[i]);
}

selectionSort(a, n);
printf("Sorted array: \n");
for (i = 0; i < n; i++)
{
printf("%d ", a[i]);
}
return 0;
}
7. Bubble Sort

#include <stdio.h>
void bubbleSort(int a[], int n) {
int i, j;
for (i = 0; i < n - 1; i++) {
for (j = 0; j < n - i - 1; j++) {
if (a[j] > a[j + 1]) {
int temp = a[j];
a[j] = a[j + 1];
a[j + 1] = temp;
}
}
}
}

int main()
{
int n, i;
printf("Enter the number of elements: ");
scanf("%d", &n);
int a[n];
printf("Enter the array elements:\n");
for (i = 0; i < n; i++)
{
scanf("%d", &a[i]);
}

bubbleSort(a, n);
printf("\nSorted array: \n");
for (i = 0; i < n; i++)
{
printf("%d ", a[i]);
}
return 0;
}
8. Merge Sort

#include <stdio.h>
#include <stdlib.h>

void mergesort(int,int);
void merge(int,int,int);
int a[100];

int main() {
int i,n;
printf("enter the range : ");
scanf("%d",&n);
printf("\nEnter the %d numbers : ",n);
for(i=0;i<n;i++)
scanf("%d",&a[i]);
mergesort(0,n-1);
printf("\nAfter sorting : ");
for(i=0;i<n;i++)
printf("%d ",a[i]);
return 0;
}

void mergesort(int low,int high) {


int mid;
if (low < high)
{
mid = (low+high)/2;
mergesort(low,mid);
mergesort(mid+1,high);
merge(low,mid,high);
}
}

void merge(int low,int mid,int high) {


int i=low;
int j=mid+1;
int k=low;
int c[100];
while ((i<=mid) && (j<=high))
{
if (a[i] < a[j])
{
c[k]=a[i];
k=k+1;
i=i+1;
}
else
{
c[k]=a[j];
k=k+1;
j=j+1;
}
}
while (i<=mid)
{
c[k]=a[i];
k=k+1;
i=i+1;
}
while(j<=high)
{
c[k]=a[j];
k=k+1;
j=j+1;
}
for (i=low; i<k;i++)
{
a[i]=c[i];
}
}

9. Linear Search
#include <stdio.h>

int linearSearch(int* arr, int n, int key) {


for (int i = 0; i < n; i++) {
if (arr[i] == key) {
return i;
}
}
return -1;
}

int main() {
int n,arr[100],key;
printf("Enter the number of elements:");
scanf("%d",&n);
printf("Enter the elements:");
for(int i=0;i<n;i++)
{
scanf("%d",&arr[i]);
}
printf("enter the key element:");
scanf("%d",&key);
int i = linearSearch(arr, n, key);
if (i == -1)
printf("Key Not Found");
else
printf("Key Found at Index: %d", i);
return 0;
}

10. Binary Search


#include <stdio.h>

int binarySearch(int array[], int size, int target) {


int low = 0, high = size - 1;
while (low <= high)
{
int mid = low + (high - low) / 2;
if (array[mid] == target)
return mid;
if (array[mid] < target)
low = mid + 1;
else
high = mid - 1;
}
return -1; // Target not found
}

int main() {
int array[100],target,n,i;
printf("Enter the number of elements:");
scanf("%d",&n);
printf("Enter the array elements:");
for(i=0;i<n;i++)
{
scanf("%d",&array[i]);
}
printf("enter the target element:");
scanf("%d",&target);
int result = binarySearch(array, n ,target);
if (result == -1)
printf("Element is not present in the array”);
else
printf(“Element is present at index %d\n", result);
return 0;
}

You might also like