Dsa Program
Dsa Program
#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;
scanf("%d",&size);
do
printf("\n1.Push\n2.pop\n3.display\n4.topelement\n5.Enhance");
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;
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
scanf("%d",&ele);
st[++top]=ele;
void pop()
if(isempty())
else
printf("\n%d is deleleted",st[top]);
top--;
void peek()
if(isempty())
else
void display()
if(isempty())
printf("\nStack is empty -underflow\n");
else
for( i=top;i>=0;i--)
printf("%d\t",st[i]);
void enhance()
size=2*size;
st=(int *)realloc(st,size*sizeof(int));
#include<stdio.h>
#include<ctype.h>
char stack[100];
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;
return 1;
return 2;
else
return 0;
int main()
char exp[100];
char *e, x;
scanf("%s",exp);
printf("\n");
e = exp;
while(*e != '\0')
if(isalnum(*e))
printf("%c ",*e);
push(*e);
{
while((x = pop()) != '(')
else
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];
void push(int x)
{
stack[++top] = x;
int pop()
return stack[top--];
int main()
char exp[20];
char *e;
int n1,n2,n3,num;
scanf("%s",exp);
e = exp;
while(*e != '\0')
if(isdigit(*e))
num = *e - 48;
push(num);
else
n1 = pop();
n2 = pop();
switch(*e)
break;
break;
break;
push(n3);
e++;
#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;
scanf("%d",&n);
printf("\n1.Enque\n2.dequeing\n3.frontrearelements\n4.display");
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");
int isfull()
if(rear==(n-1))
return 1;
else
return 0;
int isempty()
return 1;
else
return 0;
void enque()
if(isfull())
printf("\nOverflow-Queue is Full\n");
else
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
for(i=front;i<=rear;i++)
printf("%d\t",que[i]);
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;
scanf("%d",&n);
do
printf("\n1.Enque\n2.dequeing\n3.frontrearelements\n4.display");
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()
return 1;
else
return 0;
void enque()
if(isfull())
printf("\nOverflow-Queue is Full\n");
else
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
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;
};
int ele,pos,i,c;
void insbeg();
void insend();
void inspos();
void display();
void insbeg()
scanf("%d",&ele);
temp->data=ele;
temp->link=NULL;
if(start==NULL)
start=temp;
else
temp->link=start;
start=temp;
}
void insend()
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()
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;
scanf("%d",&pos);
ptr=start;
if(start->link==NULL)
if(pos==1)
start=NULL;
c=1;
else
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)
else
prev->link=ptr->link;
if(c==1)
free(ptr);
void delinfo()
if(start==NULL)
printf("\nlist is empty");
else
c=0;
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)
else
prev->link=ptr->link;
free(ptr);
void display()
if(start==NULL)
printf("\nlist is empty");
else
while(ptr!=NULL)
printf("%d->",ptr->data);
ptr=ptr->link;
printf("NULL");
}
int main()
int ch;
do
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;
}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;
};
void create();
void display();
void search();
void reverse();
void count();
void sort();
int ele,c,n=0,i,j;
int main()
int ch;
create();
count();
do
printf("\n1.search\n2.sort\n3.reverse\n4.display\n");
scanf("%d",&ch);
switch(ch)
case 1 : search();
break;
case 2 : sort();
break;
case 3: reverse();
break;
case 4 : display();
break;
void create()
int ele;
scanf("%d",&ele);
while(ele!=-1)
temp->data=ele;
temp->link=NULL;
if(start==NULL)
start=temp;
else
ptr=start;
while(ptr->link!=NULL)
ptr=ptr->link;
ptr->link=temp;
scanf("%d",&ele);
void display()
if(start==NULL)
printf("\nlist is empty");
else
ptr=start;
while(ptr!=NULL)
printf("%d->",ptr->data);
ptr=ptr->link;
printf("NULL");
void search()
scanf("%d",&ele);
ptr= start;
while(ptr!=NULL)
if(ptr->data==ele)
c++;
break;
else
ptr=ptr->link;
if(c==0)
else
printf("\nElement exists");
void count()
ptr= start;
while(ptr!=NULL)
ptr=ptr->link;
n++;
printf("\nNumber of nodes=%d",n);
void reverse()
curr=start;
while(curr!=NULL)
next=curr->link;
curr->link=prev;
prev=curr;
curr=next;
start=prev;
void sort()
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;
}
}
#include<stdio.h>
#include<stdlib.h>
struct node
int data;
};
int ele,pos,i;
void insbeg();
void insend();
void inspos();
void delbeg();
void delend();
void delpos();
void delinfo();
void display();
void insbeg()
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()
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()
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
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)
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
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)
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;
while(ptr!=NULL)
printf("%d->",ptr->data);
ptr=ptr->forw;
printf("NULL");
int main()
{
int ch;
do
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;
}while(ch>=1&&ch<=8);
return 0;
}
8) WAP to implement Circular Linked List.
#include<stdio.h>
#include<stdlib.h>
struct node
int data;
};
int ele,pos,i;
void insbeg();
void insend();
void inspos();
void delbeg();
void delend();
void delpos();
void delinfo();
void display();
void insbeg()
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()
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()
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
{
scanf("%d",&pos);
ptr=start;
if(start->link==start)
if(pos==1)
start=NULL;
else
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)
else
prev->link=ptr->link;
free(ptr);
void delinfo()
if(start==NULL)
printf("\nlist is empty");
else
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)
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;
do
printf("%d->",ptr->data);
ptr=ptr->link;
}while(ptr!=start);
printf("start");
int main()
int ch;
do
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;
}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;
};
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()
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;
top=top->link;
free(ptr);
void display()
if(isempty())
else
ptr=top;
while(ptr!=NULL)
printf("%d->",ptr->data);
ptr=ptr->link;
printf("NULL");
void peek()
if(isempty())
else
}
int main()
int ch;
do
printf("\n1.push\t2.pop\t3.peek\t4.display\t5.exit");
scanf("%d",&ch);
switch(ch)
case 1 : push();
break;
case 2 : pop();
break;
case 3 : peek();
break;
case 4 : display();
break;
return 0;
}
10) WAP to implement Queues using Linked Lists.
#include<stdio.h>
#include<stdlib.h>
struct node
int data;
};
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()
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;
if(front==rear)
front=rear=NULL;
else
front=front->link;
free(ptr);
void display()
if(isempty())
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())
else
int main()
int ch;
do
printf("\n1.Enque\t2.deque\t3.frontrearele\t4.display\t5.exit\n");
scanf("%d",&ch);
switch(ch)
case 1 : enque();
break;
case 2 : deq();
break;
case 3 : frontrearele();
break;
case 4 : display();
break;
return 0;
#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]);
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;
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;
scanf("%d",&n);
for( i=0;i<n;i++)
scanf("%d",&a[i]);
for(i=0;i<n;i++)
printf("%d\t",a[i]);
heap();
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);
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;
#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]);
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;
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]);
scanf("%d",&key);
for(i=0;i<n;i++)
if(key==a[i])
c=1;
break;
}
}
if(c==0)
else
return 0;
int main()
int a[20],n,i,key;
int low,mid,high;
printf("Enter no of elements:");
scanf("%d",&n);
for(i=0;i<n;i++)
scanf("%d",&a[i]);
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)
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()
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
void search()
c=0;
scanf("%d",&key);
val=key%n;
if(ht[val]==key)
else
for(i=(val+1)%n;i!=val;i=(i+1)%n)
if(ht[i]==key)
c=1;
break;
}
if(c==1)
else
void del()
c=0;
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
void display()
printf("key\tval\n");
for(i=0;i<n;i++)
printf("%d\t%d\n",ht[i],i);
printf("\n");
int main()
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");
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;
#include<stdio.h>
#include<stdlib.h>
struct node
{
int data;
};
int f=0,r=0;
int ele;
scanf("%d",&ele);
while(ele!=-1)
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;
scanf("%d",&ele);
return root;
if(ptr!=NULL)
inorder(ptr->left);
printf("%d\t",ptr->data);
inorder(ptr->right);
if(ptr!=NULL)
printf("%d\t",ptr->data);
preorder(ptr->left);
preorder(ptr->right);
if(ptr!=NULL)
postorder(ptr->left);
postorder(ptr->right);
printf("%d\t",ptr->data);
int main()
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;
};
if(ptr==NULL)
return temp;
if(ele >(ptr->data))
ptr->right = insert(ptr->right,ele);
ptr->left = insert(ptr->left,ele);
return ptr;
if(ptr==NULL)
return NULL;
return findmin(ptr->left);
else
return ptr;
if(ptr==NULL)
else
p = findmin(ptr->right);
ptr->data = p->data;
else
remove it from the tree and connect its parent to its child */
p = ptr;
if(ptr->left == NULL)
ptr = ptr->right;
ptr = ptr->left;
return ptr;
if(ptr==NULL)
return NULL;
if(ele >ptr->data)
return find(ptr->right,ele);
return find(ptr->left,ele);
else
return ptr;
if(ptr!=NULL)
inorder(ptr->left);
printf("%d\t",ptr->data);
inorder(ptr->right);
}
int main()
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)
scanf("%d",&ele);
inorder(root);
break;
case 2:
scanf("%d",&ele);
root = del(root,ele);
inorder(root);
break;
case 3:
break;
case 4:
scanf("%d",&ele);
p = find(root,ele);
if(p==NULL)
else
printf("%dElement is found\n",p->data);
break;
case 5:
exit(0);
break;
default:
break;
return 0;
#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;
for(k=1;k<=m;k++)
scanf("%d%d",&i,&j);
cost[i][j]=1;
printf("Visitied vertices\n");
printf("%d\t", v);
visited[v]=1;
k=1;
while(k<n)
for(j=1;j<=n;j++)
visit[j]=1;
queue[rear++]=j;
v=queue[front++];
printf("%d\t",v);
k++;
visit[v]=0;
visited[v]=1;
#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;
for(k=1;k<=m;k++)
scanf("%d%d",&i,&j);
cost[i][j]=1;
printf("Visitied vertices\n");
printf("%d\t", v);
visited[v]=1;
k=1;
while(k<n)
for(j=n;j>=1;j--)
visit[j]=1;
stack [top]=j;
top++;
v= stack [--top];
printf("%d\t",v);
k++;
visit[v]=0; visited[v]=1;