Thanks to visit codestin.com
Credit goes to www.scribd.com

0% found this document useful (0 votes)
23 views85 pages

Dsa Program

Uploaded by

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

Dsa Program

Uploaded by

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

1) WAP to implement Stacks using dynamic Arrays

#include<stdio.h>

#include<stdlib.h>

int *st,size,top=-1,ele,i;

int isempty();

int isfull();

void push();

void pop();

void display();

void peek();

void enhance();

void main()

int ch;

printf("\nenter size of the stack =\n");

scanf("%d",&size);

st= (int *)malloc(size*sizeof(int));

do

printf("\n1.Push\n2.pop\n3.display\n4.topelement\n5.Enhance");

printf("\nEnter your choice");

scanf("%d",&ch);

switch(ch)

case 1: push();

break;

case 2: pop();

break;

case 3: display();
break;

case 4: peek();

break;

case 5: enhance();

break;

default : printf("\nWrong choice");

}while(ch>=1 && ch<=5);

int isempty()

if(top==-1)

return 1;

else

return 0;

int isfull()

if(top==(size-1))

return 1;

else

return 0;

}
void push()

if(isfull())

printf("\nstack is full-overflow\n");

else

printf("\nEnter element= ");

scanf("%d",&ele);

st[++top]=ele;

void pop()

if(isempty())

printf("\nStack is empty -underflow\n");

else

printf("\n%d is deleleted",st[top]);

top--;

void peek()

if(isempty())

printf("\nStack is empty -underflow\n");

else

printf("\n%d is topmost element",st[top]);

void display()

if(isempty())
printf("\nStack is empty -underflow\n");

else

printf("\nElements of the stack are:\n");

for( i=top;i>=0;i--)

printf("%d\t",st[i]);

void enhance()

size=2*size;

st=(int *)realloc(st,size*sizeof(int));

2) WAP to implement Infix to Postfix Conversion

#include<stdio.h>

#include<ctype.h>

char stack[100];

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;

else if(x == '+' || x == '-')

return 1;

else if(x == '*' || x == '/')

return 2;

else

return 0;

int main()

char exp[100];

char *e, x;

printf("Enter the expression : ");

scanf("%s",exp);

printf("\n");

e = exp;

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());

}return 0;

}
3) WAP to implement Postfix Expression Evaluation.

#include<stdio.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("Enter the expression :: ");

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 = n1 + n2;

break;

case '-': n3 = n2 - n1;


break;

case '*': n3 = n1 * n2;

break;

case '/': n3 = n2 / n1;

break;

push(n3);

e++;

printf("\nThe result of expression %s = %d\n\n",exp,pop()); return 0;

4) WAP to implement Linear Queues using Arrays.

#include<stdio.h>

int que[50],n,front=-1,rear=-1,i,ele;

void enque();

void deq();

void fere();

void display();

int isempty();

int isfull();

int main()

int ch;

printf("Enter size of the queue");

scanf("%d",&n);

printf("\nLinear Queue Operations");


do

printf("\n1.Enque\n2.dequeing\n3.frontrearelements\n4.display");

printf("\nEnter your choice");

scanf("%d",&ch);

switch(ch)

case 1: enque();

break;

case 2: deq();

break;

case 3: fere();

break;

case 4: display();

break;

default:printf("\nwrong choice");

}while(ch>=1 && ch<=4);

int isfull()

if(rear==(n-1))

return 1;

else

return 0;

int isempty()

if(front==-1 && rear==-1)

return 1;

else
return 0;

void enque()

if(isfull())

printf("\nOverflow-Queue is Full\n");

else

printf("\n Enter element to insert");

scanf("%d",&ele);

if(front==-1&&rear==-1)

front++;

rear++;

que[rear]=ele;

else

que[++rear]=ele;

void deq()

if(isempty())

printf("\nUnderflow-Queue is Empty\n");

else

{
ele=que[front];

if(front==rear)

front=rear=-1;

else

front++;

printf("\n%d is deleted",ele);

void fere()

if(isempty())

printf("\nUnderflow-Queue is Empty\n");

else

printf("\nFront element=%d\tRearelement=%d",que[front],que[rear]);

void display()

if(isempty())

printf("\nUnderflow-Queue is Empty\n");

else

printf("\nQueue Elements are=\n");

for(i=front;i<=rear;i++)

printf("%d\t",que[i]);

5) WAP to implement Circular Queues using Arrays.


#include<stdio.h>

int cq[50],n,front=-1,rear=-1,i,ele;

void enque();

void deq();

void fere();

void display();

int isempty();

int isfull();

int main()

int ch;

printf("Enter size of the queue");

scanf("%d",&n);

printf("\ncircular Linear Queue Operations");

do

printf("\n1.Enque\n2.dequeing\n3.frontrearelements\n4.display");

printf("\nEnter your choice");

scanf("%d",&ch);

switch(ch)

case 1: enque();

break;

case 2: deq();

break;

case 3: fere();

break;

case 4: display();

break;

default:printf("\nwrong choice");

}
}while(ch>=1 && ch<=4);

int isfull()

if((rear+1)%n==front)

return 1;

else

return 0;

int isempty()

if(front==-1 && rear==-1)

return 1;

else

return 0;

void enque()

if(isfull())

printf("\nOverflow-Queue is Full\n");

else

printf("\n Enter element to insert");

scanf("%d",&ele);

if(isempty())

front++;

rear++;
cq[rear]=ele;

else

rear=(rear+1)%n;

cq[rear]=ele;

void deq()

if(isempty())

printf("\nUnderflow-Queue is Empty\n");

else

printf("\n%d is deleted",cq[front]);

if(front==rear)

front=rear=-1;

else

front=(front+1)%n;

void fere()

if(isempty())

printf("\nUnderflow-Queue is Empty\n");

else

printf("\nFront element=%d\tRearelement=%d",cq[front],cq[rear]);

}
void display()

if(isempty())

printf("\nUnderflow-Queue is Empty\n");

else

printf("\nQueue Elements are=\n");

if(front<=rear)

for(i=front;i<=rear;i++)

printf("%d\t",cq[i]);

else

i=front;

do

printf("%d\t",cq[i]);

i=(i+1)%n;

}while(i!=rear);

printf("%d\t",cq[i]);
}

}
6) WAP to implement Singly Linked List operations

#include<stdio.h>

#include<stdlib.h>

struct node

int data;

struct node *link;

};

struct node *start=NULL,*ptr,*prev;

int ele,pos,i,c;

void insbeg();

void insend();

void inspos();

void display();

void insbeg()

struct node *temp=(struct node *)malloc(sizeof(struct node *));

printf("\nEnter element to insert");

scanf("%d",&ele);

temp->data=ele;

temp->link=NULL;

if(start==NULL)

start=temp;

else

temp->link=start;

start=temp;
}

void insend()

struct node *temp=(struct node *)malloc(sizeof(struct node *));

printf("\nEnter element to insert");

scanf("%d",&ele);

temp->data=ele;

temp->link=NULL;

if(start==NULL)

start=temp;

else

ptr=start;

while(ptr->link!=NULL)

ptr=ptr->link;

ptr->link=temp;

void inspos()

struct node *temp=(struct node *)malloc(sizeof(struct node *));

printf("\nEnter element and position");

scanf("%d%d",&ele,&pos);

temp->data=ele;

temp->link=NULL;

if(start==NULL)
{

if(pos==1)

start=temp;

else

printf("\nwrong position");

else

if(pos==1)

temp->link=start;

start=temp;

else

ptr=start;

for(i=1;i<pos-1&&ptr->link!=NULL;i++)

ptr=ptr->link;

f(i<pos-1)

printf("\nwrong position");

else

temp->link=ptr->link;

ptr->link=temp;

void delbeg()

if(start==NULL)
printf("\nlist is empty");

else

ptr=start;

start=start->link;

free(ptr);

void delend()

if(start==NULL)

printf("\nlist is empty");

else

ptr=start;

if(start->link==NULL)

start=NULL;

else

while(ptr->link!=NULL)

prev=ptr;

ptr=ptr->link;

}
prev->link=NULL;

free(ptr);

void delpos()

if(start==NULL)

printf("\nlist is empty");

else

c=0;

printf("\nEnter position to delete");

scanf("%d",&pos);

ptr=start;

if(start->link==NULL)

if(pos==1)

start=NULL;

c=1;

else

printf("\n wrong position");

else

if(pos==1)

start=start->link;
c=1;

else

for(i=1;i<pos&&ptr->link!=NULL;i++)

prev=ptr;

ptr=ptr->link;

if(i<pos)

printf("\n wroing position");

else

prev->link=ptr->link;

if(c==1)

free(ptr);

void delinfo()

if(start==NULL)

printf("\nlist is empty");

else

c=0;

printf("\nEnter element to delete");


scanf("%d",&ele);

ptr=start;

if(start->link==NULL)

if(start->data==ele)

start=NULL;

free(ptr);

else

if(start->data==ele)

start=start->link;

free(ptr);

else

while(ptr!=NULL)

if(ptr->data==ele)

c++;

break;

else

prev=ptr;

ptr=ptr->link;
}

if(c==0)

printf("\nElement does not exist");

else

prev->link=ptr->link;

free(ptr);

void display()

if(start==NULL)

printf("\nlist is empty");

else

struct node *ptr=start;

printf("\nlist elements are:");

while(ptr!=NULL)

printf("%d->",ptr->data);

ptr=ptr->link;

printf("NULL");

}
int main()

int ch;

do

printf("\n1.insertion at begin\t2.insertion at end\t3.insertion based on position\t4.deletion at


begin\n5.deletion at end\t6.deletion based on position\t7.deletion based on element\t8.display\n");

printf("enter your choice");

scanf("%d",&ch);

switch(ch)

case 1 : insbeg();

break;

case 2 : insend();

break;

case 3 : inspos();

break;

case 4 : delbeg();

break;

case 5 : delend();

break;

case 6 : delpos();

break;

case 7 : delinfo();

break;

case 8 : display();

break;

default:printf("\n wrong choice");

}while(ch>=1&&ch<=8);
return 0;

}
6 A) WAP to implement SLL operations (count,search,reverse,sort)

#include<stdio.h>

#include<stdlib.h>

struct node

int data;

struct node *link;

};

void create();

void display();

void search();

void reverse();

void count();

void sort();

struct node *start=NULL,*ptr;

int ele,c,n=0,i,j;

int main()

int ch;

create();

count();
do

printf("\n1.search\n2.sort\n3.reverse\n4.display\n");

printf("enter your choice");

scanf("%d",&ch);

switch(ch)

case 1 : search();

break;

case 2 : sort();

break;

case 3: reverse();

break;

case 4 : display();

break;

}while(ch>=1 && ch<=4);

void create()

int ele;

printf("\n Enter elements to be inserted at end press -1");

scanf("%d",&ele);

while(ele!=-1)

struct node *temp=(struct node *)malloc(sizeof(struct node *));

temp->data=ele;

temp->link=NULL;

if(start==NULL)

start=temp;
else

ptr=start;

while(ptr->link!=NULL)

ptr=ptr->link;

ptr->link=temp;

printf("\n Enter elements to be inserted at end press -1");

scanf("%d",&ele);

void display()

if(start==NULL)

printf("\nlist is empty");

else

ptr=start;

printf("\nlist elements are:");

while(ptr!=NULL)

printf("%d->",ptr->data);

ptr=ptr->link;

printf("NULL");

void search()

printf("\n Enter elements to search");

scanf("%d",&ele);
ptr= start;

while(ptr!=NULL)

if(ptr->data==ele)

c++;

break;

else

ptr=ptr->link;

if(c==0)

printf("\nElement does not exist");

else

printf("\nElement exists");

void count()

ptr= start;

while(ptr!=NULL)

ptr=ptr->link;

n++;

printf("\nNumber of nodes=%d",n);

void reverse()

struct node *prev,*curr,*next;


prev=NULL;

curr=start;

while(curr!=NULL)

next=curr->link;

curr->link=prev;

prev=curr;

curr=next;

start=prev;

void sort()

struct node *curr,*next;

for(i=1;i<=n;i++)

curr=start;

next=curr->link;

for(j=1;j<n;j++)

if(curr->data>next->data)

ele=curr->data;

curr->data=next->data;

next->data=ele;

curr=next;

next=next->link;

}
}

7) WAP to implement doubly Linked List.

#include<stdio.h>

#include<stdlib.h>

struct node

int data;

struct node *prev,*forw;

};

struct node *start=NULL,*ptr,*back;

int ele,pos,i;

void insbeg();

void insend();

void inspos();

void delbeg();

void delend();

void delpos();

void delinfo();

void display();

void insbeg()

struct node *temp=(struct node *)malloc(sizeof(struct node *));

printf("\nEnter element to insert");

scanf("%d",&ele);

temp->data=ele;

temp->prev=NULL;

temp->forw=NULL;

if(start==NULL)

start=temp;
else

temp->forw=start;

start->prev=temp;

start=temp;

void insend()

struct node *temp=(struct node *)malloc(sizeof(struct node *));

printf("\nEnter element to insert");

scanf("%d",&ele);

temp->data=ele;

temp->prev=NULL;

temp->forw=NULL;

if(start==NULL)

start=temp;

else

ptr=start;

while(ptr->forw!=NULL)

ptr=ptr->forw;

ptr->forw=temp;

temp->prev=ptr;

void inspos()

struct node *temp=(struct node *)malloc(sizeof(struct node *));

printf("\nEnter element and position");

scanf("%d%d",&ele,&pos);
temp->data=ele;

temp->prev=NULL;

temp->forw=NULL;

if(start==NULL)

if(pos==1)

start=temp;

else

printf("\nwrong position");

else

if(pos==1)

temp->forw=start;

start->prev=temp;

start=temp;

else

ptr=start;

for(i=1;i<pos-1&&ptr->forw!=NULL;i++)

ptr=ptr->forw;

if(i<pos-1)

printf("\nwrong position");

else if(ptr->forw==NULL)

ptr->forw=temp;

temp->prev=ptr;

}
else

temp->forw=ptr->forw;

ptr->forw->prev=temp;

ptr->forw=temp;

temp->prev=ptr;

void delbeg()

if(start==NULL)

printf("\nlist is empty");

else

ptr=start;

start=start->forw;

start->prev=NULL;

free(ptr);

void delend()

if(start==NULL)

printf("\nlist is empty");

else
{

ptr=start;

if(start->forw==NULL)

start=NULL;

else

while(ptr->forw!=NULL)

back=ptr;

ptr=ptr->forw;

back->forw=NULL;

free(ptr);

void delpos()

if(start==NULL)

printf("\nlist is empty");

else

printf("\nEnter position to delete");

scanf("%d",&pos);

ptr=start;

if(start->forw==NULL)

If(pos==1)

start=NULL;

else
printf("\n wrong position");

else

if(pos==1)

start=start->forw;

start->prev=NULL;

free(ptr);

else

for(i=1;i<pos&&ptr->forw!=NULL;i++)

back=ptr;

ptr=ptr->forw;

if(i<pos)

printf("\n wrong position");

else if(ptr->forw==NULL)

back->forw=NULL;

else

back->forw=ptr;

ptr->forw->prev=back;

free(ptr);

}
}

void delinfo()

if(start==NULL)

printf("\nlist is empty");

else

printf("\nEnter element to delete");

scanf("%d",&ele);

ptr=start;

int c=0,count=1;

while(ptr!=NULL)

if(ptr->data==ele)

c++;

break;

else

back=ptr;

ptr=ptr->forw;

count++;

if(c==0)

printf("\nElement does not exist");

else
{

if(count==1)

start=start->forw;

start->prev=NULL;

else

back->forw=ptr->forw;

free(ptr);

void display()

if(start==NULL)

printf("\nlist is empty");

else

ptr=start;

printf("\nlist elements are:");

while(ptr!=NULL)

printf("%d->",ptr->data);

ptr=ptr->forw;

printf("NULL");

int main()
{

int ch;

do

printf("\n1.insertion at begin\t2.insertion at end\t3.insertion based on position\t4.deletion at


begin\n5.deletion at end\t6.deletion based on position\t7.deletion based on element\t8.display\n");

printf("enter your choice");

scanf("%d",&ch);

switch(ch)

case 1 : insbeg();

break;

case 2 : insend();

break;

case 3 : inspos();

break;

case 4 : delbeg();

break;

case 5 : delend();

break;

case 6 : delpos();

break;

case 7 : delinfo();

break;

case 8 : display();

break;

default:printf("\n wrong choice");

}while(ch>=1&&ch<=8);
return 0;

}
8) WAP to implement Circular Linked List.

#include<stdio.h>

#include<stdlib.h>

struct node

int data;

struct node *link;

};

struct node *start=NULL,*ptr,*prev;

int ele,pos,i;

void insbeg();

void insend();

void inspos();

void delbeg();

void delend();

void delpos();

void delinfo();

void display();

void insbeg()

struct node *temp=(struct node *)malloc(sizeof(struct node *));


printf("\nEnter element to insert");

scanf("%d",&ele);

temp->data=ele;

temp->link=NULL;

if(start==NULL)

start=temp;

start->link=start;

else

ptr=start;

while(ptr->link!=start)

ptr=ptr->link;

temp->link=start;

ptr->link=temp;

start=temp;

void insend()

struct node *temp=(struct node *)malloc(sizeof(struct node *));

printf("\nEnter element to insert");

scanf("%d",&ele);

temp->data=ele;

temp->link=NULL;

if(start==NULL)

start=temp;

start->link=start;

}
else

ptr=start;

while(ptr->link!=start)

ptr=ptr->link;

ptr->link=temp;

temp->link=start;

void inspos()

struct node *temp=(struct node *)malloc(sizeof(struct node *));

printf("\nEnter element and position");

scanf("%d%d",&ele,&pos);

temp->data=ele;

temp->link=NULL;

if(start==NULL)

if(pos==1)

start=temp;

start->link=start;

else

printf("\nwrong position");

else

ptr=start;

if(pos==1)
{

ptr=start;

while(ptr->link!=start)

ptr=ptr->link;

temp->link=start;

ptr->link=temp;

start=temp;

else

for(i=1;i<pos-1&&ptr->link!=start;i++)

ptr=ptr->link;

if(i<pos-1)

printf("\nwrong position");

else

temp->link=ptr->link;

ptr->link=temp;

void delbeg()

if(start==NULL)

printf("\nlist is empty");

else

ptr=prev=start;

while(ptr->link!=start)

ptr=ptr->link;
start=start->link;

ptr->link=start;

free(prev);

void delend()

if(start==NULL)

printf("\nlist is empty");

else

ptr=start;

if(start->link==NULL)

start=NULL;

else

while(ptr->link!=start)

prev=ptr;

ptr=ptr->link;

prev->link=start;

free(ptr);

void delpos()

if(start==NULL)

printf("\nlist is empty");

else
{

printf("\nEnter position to delete");

scanf("%d",&pos);

ptr=start;

if(start->link==start)

if(pos==1)

start=NULL;

else

printf("\n wrong position");

else

if(pos==1)

ptr=prev=start;

while(ptr->link!=start)

ptr=ptr->link;

start=start->link;

ptr->link=start;

free(prev);

else

for(i=1;i<pos&&ptr->link!=start;i++)

prev=ptr;

ptr=ptr->link;

}
printf("\n%d\t%d\n",i,pos);

if(i<pos)

printf("\n wroing position");

else

prev->link=ptr->link;

free(ptr);

void delinfo()

if(start==NULL)

printf("\nlist is empty");

else

printf("\nEnter element to delete");

scanf("%d",&ele);

ptr=start;

int c=0,count=1;

do

if(ptr->data==ele)

c++;

break;

else
{

prev=ptr;

ptr=ptr->link;

count++;

}while(ptr!=start);

if(c==0)

printf("\nElement does not exist");

else

if(count==1)

ptr=prev=start;

while(ptr->link!=start)

ptr=ptr->link;

start=start->link;

ptr->link=start;

free(prev);

else

prev->link=ptr->link;

free(ptr);

void display()

if(start==NULL)

printf("\nlist is empty");
else

ptr=start;

printf("\nlist elements are:");

do

printf("%d->",ptr->data);

ptr=ptr->link;

}while(ptr!=start);

printf("start");

int main()

int ch;

do

printf("\n1.insertion at begin\t2.insertion at end\t3.insertion based on position\t4.deletion at


begin\n5.deletion at end\t6.deletion based on position\t7.deletion based on element\t8.display\n");

printf("enter your choice");

scanf("%d",&ch);

switch(ch)

case 1 : insbeg();

break;

case 2 : insend();

break;

case 3 : inspos();

break;

case 4 : delbeg();
break;

case 5 : delend();

break;

case 6 : delpos();

break;

case 7 : delinfo();

break;

case 8 : display();

break;

default: printf("\n wrong choice");

}while(ch>=1&&ch<=8);

return 0;

}
9) WAP to implement Stacks using Linked Lists.

#include<stdio.h>

#include<stdlib.h>

struct node

int data;

struct node *link;

};

struct node *top=NULL,*ptr;

int ele,i;

int isempty();

void push();

void pop();
void display();

void topele();

int isempty()

if(top==NULL)

return 1;

else

return 0;

void push()

struct node *temp=(struct node *)malloc(sizeof(struct node *));

printf("\nenter element to insert into stack:");

scanf("%d",&ele);

temp->data=ele;

temp->link=NULL;

if(top==NULL)

top=temp;

else

temp->link=top;

top=temp;

void pop()

if(isempty())

printf("\nstack is empty");

else

{
ptr=top;

printf("\ndeleted element is =%d",top->data);

top=top->link;

free(ptr);

void display()

if(isempty())

printf("\nno elements in stack");

else

printf("\nstack elements are ");

ptr=top;

while(ptr!=NULL)

printf("%d->",ptr->data);

ptr=ptr->link;

printf("NULL");

void peek()

if(isempty())

printf("\n no elements in stack");

else

printf("\ntop of element:%d ",top->data);

}
int main()

int ch;

do

printf(“\nStack using linkedlist”);

printf("\n1.push\t2.pop\t3.peek\t4.display\t5.exit");

printf("\nenter your choice");

scanf("%d",&ch);

switch(ch)

case 1 : push();

break;

case 2 : pop();

break;

case 3 : peek();

break;

case 4 : display();

break;

}while(ch>=1 && ch<=4);

return 0;

}
10) WAP to implement Queues using Linked Lists.

#include<stdio.h>

#include<stdlib.h>

struct node

int data;

struct node *link;

};

struct node *front,*rear,*ptr;

int ele,i;

int isempty();

void enque();

void deq();

void display();

void frontandrearele();

int isempty()

if(front==NULL)

return 1;

else

return 0;

void enque()

struct node *temp=(struct node *)malloc(sizeof(struct node *));

printf("\nenter element to insert into queue:");

scanf("%d",&ele);

temp->data=ele;
temp->link=NULL;

if(front==NULL)

front=rear=temp;

else

rear->link=temp;

rear=temp;

void deq()

if(isempty())

printf("\nQueue is empty");

else

ptr=front;

printf("\ndeleted element is =%d",front->data);

if(front==rear)

front=rear=NULL;

else

front=front->link;

free(ptr);

void display()

if(isempty())

printf("\nno elements in queue");

else

{
printf("\nqueue elements are ");

ptr=front;

for(ptr=front;ptr!=NULL;ptr=ptr->link)

printf("%d->",ptr->data);

printf("NULL");

void frontrearele()

if(isempty())

printf("\n no elements in queue");

else

printf("\nfront element:%d\trear element=%d",front->data,rear->data);

int main()

int ch;

do

printf("\n Queue using linked list:");

printf("\n1.Enque\t2.deque\t3.frontrearele\t4.display\t5.exit\n");

printf("\nenter your choice");

scanf("%d",&ch);

switch(ch)

case 1 : enque();

break;
case 2 : deq();

break;

case 3 : frontrearele();

break;

case 4 : display();

break;

}while(ch>=1 && ch<=4);

return 0;

11) WAP to implement Insertion Sort

#include<stdio.h>

void main()

int a[20],n,i,t,p;

printf("Enter no of elements:");

scanf("%d",&n);

printf("\nEnter %d elements",n );

for(i=0;i<n;i++)

scanf("%d",&a[i]);

printf("\nBefore sorting Elements are");

for(i=0;i<n;i++)

printf("%d\t",a[i]);
for(int i=0;i<n;i++)

t=a[i];

p=i;

while(a[p-1]>t&&p>0)

a[p]=a[p-1];

p--;

a[p]=t;

printf("\nAfter sorting Elements are");

for(i=0;i<n;i++)

printf("%d\t",a[i]);

}
12) WAP to implement Heap Sort

#include<stdio.h>

int a[30],n;

void heap();

void adjust(int,int);

int main()

int i;

printf("\n enter number of elements");

scanf("%d",&n);

printf("\n enter %delments",n);

for( i=0;i<n;i++)

scanf("%d",&a[i]);

printf("\nBefore Swapping elements are\n");

for(i=0;i<n;i++)

printf("%d\t",a[i]);

heap();

printf("\n\nAfter Swapping elements are\n");

for(i=0;i<n;i++)

printf("%d\t",a[i]);

printf("\n");

return 0;
}

void heap()

int i , temp;

for(i=n/2-1;i>=0;i--)

adjust(i,n);

for(i=n-1;i>=1;i--)

temp=a[i];

a[i]=a[0];

a[0]=temp;

adjust(0,i);

void adjust (int i,int n)

int j;

j=(2*i)+1;

while(j<=n-1)
{

if(j<n-1)

if(a[j]<a[j+1])

j++;

if(a[i]<a[j])

int temp=a[i];

a[i]=a[j];

a[j]=temp;

i=j;

j=(2*i)+1;

13) WAP to implement Selection Sort

#include<stdio.h>

void main()

int a[25],n,i,minindex,t;
printf("Enter no of elements:");

scanf("%d",&n);

printf("\nEnter %d elements",n );

for(i=0;i<n;i++)

scanf("%d",&a[i]);

printf("\nBefore sorting Elements are");

for(i=0;i<n;i++)

printf("%d\t",a[i]);

for(i=0;i<n;i++)

minindex=i;

for(int j=i+1;j<n;j++)

if(a[j]<a[minindex])

minindex=j;

if(minindex!=i)

t=a[i];

a[i]=a[minindex];

a[minindex]=t;

printf("\n After sorting Elements are");

for(i=0;i<n;i++)

printf("%d\t",a[i]);

}
14) WAP to implement Linear search

#include<stdio.h>

int main()

int a[25],n,i,key,c=0;

printf("Enter no of elements:");

scanf("%d",&n);

printf("\nEnter %d elements",n );

for(i=0;i<n;i++)

scanf("%d",&a[i]);

printf("\nEnter element to search:");

scanf("%d",&key);

for(i=0;i<n;i++)

if(key==a[i])

c=1;

break;

}
}

if(c==0)

printf("\nElement does not exist");

else

printf("\n%d found at %d position",key,i);

return 0;

15) WAP to implement Binary search


#include<stdio.h>

int main()

int a[20],n,i,key;

int low,mid,high;

printf("Enter no of elements:");

scanf("%d",&n);

printf("\nEnter %d elements in ascending order:",n );

for(i=0;i<n;i++)

scanf("%d",&a[i]);

printf("\nEnter key element to search:");

scanf("%d",&key);

low=0;

high=n-1;

while(low<=high)

mid=(low+high)/2;

if(a[mid]==key)

printf("\n%dfound at %d position",key,mid);

break;

else if(key<a[mid])

high=mid-1;

else if(key>a[mid])

low=mid+1;

if(low>high)

printf("\n%d not found in the given array",key);

return 0;

}
16) WAP to implement Hashing

#include <stdio.h>

#include<stdlib.h>

int *ht,n,i,key,val,c,ch;

void insert();

void del();

void search();

void display();

void insert()

printf("\nEnter key to insert");

scanf("%d",&key);

val=key%n;

if(ht[val]==0)
ht[val]=key;

else

for(i=(val+1)%n;i!=val;i=(i+1)%n)

if(ht[i]==0)

break;

if(i!=val)

ht[i]=key;

else

printf("\nno place to insert element");

void search()

c=0;

printf("\nEnter key to search");

scanf("%d",&key);

val=key%n;

if(ht[val]==key)

printf("\nElement found at %d",val);

else

for(i=(val+1)%n;i!=val;i=(i+1)%n)

if(ht[i]==key)

c=1;

break;
}

if(c==1)

printf("\nElement found at %d location",i);

else

printf("\nElement not found");

void del()

c=0;

printf("\nEnter key to delete");

scanf("%d",&key);

val=key%n;

if(ht[val]==key)

ht[val] =0;

else

for(i=(val+1)%n;i!=val;i=(i+1)%n)

if(ht[i]==key)

c=1;

break;

if(c==1)

ht[i]=0;

else

printf("\nElement not found");


}

void display()

printf("\n Hash table key and values are\n");

printf("key\tval\n");

for(i=0;i<n;i++)

printf("%d\t%d\n",ht[i],i);

printf("\n");

int main()

printf("Enter size of the Hashtable");

scanf("%d",&n);

ht=(int *)malloc(sizeof(n));

for(i=0;i<n;i++)

ht[i]=0;

do
{

printf("\n1.insert\n2.delete\n3.search\n4.display");

printf("\nEnter your choice");

scanf("%d",&ch);

switch(ch)

case 1: insert();

break;

case 2: del() ;

break;

case 3: search();

break;

case 4: display();

break;

}while(ch>=0&&ch<=4);

return 0;

17) WAP to implement Tree Traversals on Binary Trees

#include<stdio.h>

#include<stdlib.h>

struct node
{

int data;

struct node *left,*right;

};

struct node *que[25];

struct node *root=NULL,*curr;

int f=0,r=0;

int ele;

struct node* create()

printf("\n Enter element to quit press -1\n");

scanf("%d",&ele);

while(ele!=-1)

struct node *temp=(struct node *)malloc(sizeof(struct node *));

temp->data=ele;

temp->left=temp->right=NULL;

if(root==NULL)

root=temp;

que[r]=temp;

else

curr=que[f];

if(curr->left==NULL)

curr->left=temp;

else

curr->right=temp;

que[++r]=temp;

if(curr->left!=NULL && curr->right!=NULL)


f++;

printf("\n Enter element to quit press -1\n");

scanf("%d",&ele);

return root;

void inorder(struct node *ptr)

if(ptr!=NULL)

inorder(ptr->left);

printf("%d\t",ptr->data);

inorder(ptr->right);

void preorder(struct node *ptr)

if(ptr!=NULL)

printf("%d\t",ptr->data);

preorder(ptr->left);

preorder(ptr->right);

void postorder(struct node *ptr)

if(ptr!=NULL)

postorder(ptr->left);

postorder(ptr->right);
printf("%d\t",ptr->data);

int main()

struct node *p=create();

printf("\nInorder traversal=\n");

inorder(p);

printf("\nPreorder traversal=\n");

preorder(p);

printf("\nPostorder traversal=\n");

postorder(p);

f=r=0;

}
18) WAP to implement Binary Search Tree

#include<stdio.h>

#include<stdlib.h>

struct node

int data;

struct node *left,*right;

};

struct node *insert(struct node *ptr,int ele)

if(ptr==NULL)

struct node *temp=(struct node *)malloc(sizeof(struct node *));

temp -> data = ele;

temp -> left = temp -> right = NULL;

return temp;

if(ele >(ptr->data))

ptr->right = insert(ptr->right,ele);

else if(ele < (ptr->data))

ptr->left = insert(ptr->left,ele);

return ptr;

struct node* findmin(struct node *ptr)

if(ptr==NULL)

return NULL;

if(ptr->left) /* Go to the left sub tree to find the min element */

return findmin(ptr->left);
else

return ptr;

struct node* del(struct node *ptr, int ele)

struct node *p;

if(ptr==NULL)

printf("Element Not Found");

else if(ele < ptr->data)

ptr->left = del(ptr->left, ele);

else if(ele > ptr->data)

ptr->right = del(ptr->right, ele);

else

if(ptr->right && ptr->left)

p = findmin(ptr->right);

ptr->data = p->data;

ptr -> right = del(ptr->right,p->data);

else

/* If there is only one or zero children then we can directly

remove it from the tree and connect its parent to its child */

p = ptr;

if(ptr->left == NULL)
ptr = ptr->right;

else if(ptr->right == NULL)

ptr = ptr->left;

free(p); /* temp is longer required */

return ptr;

struct node * find(struct node *ptr, int ele)

if(ptr==NULL)

return NULL;

if(ele >ptr->data)

return find(ptr->right,ele);

else if(ele < ptr->data)

return find(ptr->left,ele);

else

return ptr;

void inorder(struct node *ptr)

if(ptr!=NULL)

inorder(ptr->left);

printf("%d\t",ptr->data);

inorder(ptr->right);

}
int main()

struct node *root = NULL,*p;

int ele,ch;

while(1)

printf("\n1.Insert\n2.Delete\n3.Inorder\n4.Search\n5.Exit\n");

printf("Enter ur choice:");

scanf("%d",&ch);

switch(ch)

case 1: printf("\nEnter element to be insert:");

scanf("%d",&ele);

root = insert(root, ele);

printf("\nElements in BST are:");

inorder(root);

break;

case 2:

printf("\nEnter element to be deleted:");

scanf("%d",&ele);

root = del(root,ele);

printf("\nAfter deletion elements in BST are:");

inorder(root);

break;

case 3:

printf("\nInorder Travesals is:");


inorder(root);

break;

case 4:

printf("\nEnter element to be searched:");

scanf("%d",&ele);

p = find(root,ele);

if(p==NULL)

printf("Element is not foundn");

else

printf("%dElement is found\n",p->data);

break;

case 5:

exit(0);

break;

default:

printf("\nEnter correct choice:");

break;

return 0;

19) WAP to implement BFS

#include<stdio.h>

#include<stdlib.h>

int cost[10][10],visit[10],visited[10];

int queue[10],front,rear;

int i,j,k,n,v;

void bfsearch();
int main()

front=rear=i=j=0;

bfsearch();

return 0;

void bfsearch()

int m;

printf("enterno of vertices");

scanf("%d",&n);

printf("ente no of edges");

scanf("%d",&m);

for(int p=1;p<=m;p++)

for(int q=1;q<=m;q++)

cost[p][q]=0;

for(int p=0;p<=m;p++)

visited[p]=0;

visit[p]=0;

printf("\nEnter EDGES \n");

for(k=1;k<=m;k++)

scanf("%d%d",&i,&j);

cost[i][j]=1;

printf("enter initial vertex");


scanf("%d",&v);

printf("Visitied vertices\n");

printf("%d\t", v);

visited[v]=1;

k=1;

while(k<n)

for(j=1;j<=n;j++)

if(cost[v][j]!=0 && visited[j]!=1 && visit[j]!=1)

visit[j]=1;

queue[rear++]=j;

v=queue[front++];

printf("%d\t",v);

k++;

visit[v]=0;

visited[v]=1;

20) WAP to implement DFS

#include<stdio.h>

#include<stdlib.h>

int cost[10][10],visit[10],visited[10];

int stack[10],top;

int i,j,k,n,v;
void dfsearch();

int main()

top=1;

i=j=0;

dfsearch();

return 0;

void dfsearch()

int m;

printf("enterno of vertices");

scanf("%d",&n);

printf("ente no of edges");

scanf("%d",&m);

for(int p=1;p<=m;p++)

for(int q=1;q<=m;q++)

cost[p][q]=0;

for(int p=0;p<=m;p++)

visited[p]=0;

visit[p]=0;

printf("\nEnter EDGES \n");

for(k=1;k<=m;k++)

scanf("%d%d",&i,&j);

cost[i][j]=1;

printf("enter initial vertex");


scanf("%d",&v);

printf("Visitied vertices\n");

printf("%d\t", v);

visited[v]=1;

k=1;

while(k<n)

for(j=n;j>=1;j--)

if(cost[v][j]!=0 && visited[j]!=1 && visit[j]!=1)

visit[j]=1;

stack [top]=j;

top++;

v= stack [--top];

printf("%d\t",v);

k++;

visit[v]=0; visited[v]=1;

You might also like