Monday, April 20, 2009

HEAPSORT

/*PROGRAMME ON HEAPSORT*/
#include
#include
void heapsort(int x[],int n)
{
int i,elt,s,f,ivalue;
for(i=1; i < n ;i++)
{
elt=x[i];
s=i;f=(s-1)/2;
while(s>0&& x[f] < elt)
{
x[s]=x[f];
s=f;
f=(s-1)/2;
}
x[s]=elt;
}

for(i=n-1;i>0;i--)
{
ivalue=x[i];
x[i]=x[0];
f=0;
if(i==1)
s=-1;
else
s=1;
if(i>2&&x[2]>x[1])
s=2;
while(s>=0&& ivalue< x[s])
{
x[f]=x[s];
f=s;
s=2*f+1;
if(s+1 < = i-1&&x[s] < x[s+1])
s=s+1;
if(s>i-1)
s=-1;
}
x[f]=ivalue;
}
printf("\n After sorting:");
for(i=0; i < n ;i++)
printf("\n%2d",x[i]);
}
void main()
{
int n,i;
int data[10];
clrscr();
printf("\n Enter size of array:");
scanf("%d",&n);
for(i=0; i < n ;i++)
scanf("%d",&data[i]);
heapsort(data,n);
printf("\n Elements After Sort ");
for(i=0;i < n;i++)
{
printf("\t %d",data[i]);
}

}

INSERTIONSORT ఇంసెరషన్ సొర్త్

// Insertion Sort

#include
#include
void insertsort(int x[], int n)
{
int i,k,y;
for(k=1;k {
y=x[k];
for(i=k-1;i>=0 && y< x[i] ;i--)
{
x[i+1]=x[i];
}
x[i+1]=y;
}
}

void main()
{
int a[10],i,n;
printf("\n Enter no of elements ");
scanf("%d",&n);
printf("\n Enter Elements ");
for(i=0;i< n;i++)
{
scanf("%d",&a[i]);
}
insertsort(a,n);
printf("\n Elements After Sort ");
for(i=0;i< n;i++)
{
printf("\t %d",a[i]);
}
}

mergesort

void merge(int a[], int low, int high, int mid);
void mergesort(int a[], int low, int high)
{
int mid;

if(low < mid)
{
mid=(low+high)/2;
mergesort(a,low,mid);
mergesort(a,mid+1,high);
merge(a,low,high,mid);
}
}
void merge(int a[], int low, int high, int mid)
{
int i, j, k, c[10];
i=low;
j=mid+1;
k=low;
while((i<=mid)&&(j<=high))
{
if(a[i] < a[j] )
{
c[k]=a[i];
k++;
i++;
}
else
{
c[k]=a[j];
k++;
j++;
}
}
while(i<=mid)
{
c[k]=a[i];
k++;
i++;
}
while(j<=high)
{
c[k]=a[j];
k++;
j++;
}
for(i=low; i < k ; i++)
{
a[i]=c[i];
}
}
void main()
{
int a[10],i,n;
printf("\n Enter no of elements ");
scanf("%d",&n);
printf("\n Enter Elements ");
for(i=0;i < n;i++)
{
scanf("%d",&a[i]);
}
mergesort(a,0,n-1);
printf("\n Elements After Sort ");
for(i=0;i < n;i++)
{
printf("\t %d",a[i]);
}
}

Tuesday, April 7, 2009

BINARY SEARCH TREE Deletion, Insertioan, Traversals

// BINARY SEARCH TREE Deletion, Insertioan, Traversals
struct node
{
int info;
struct node *left,*right;
};
struct node *root;
void insert(struct node *tree,int number)
{
struct node *p,*q,*temp;
p=q=tree;
if(tree==NULL)
{
temp=(struct node*)malloc(sizeof(struct node));
temp->info=number;
temp->left=temp->right=NULL;
root=temp;
}
else
{
while(number !=p->info && q!=NULL)
{
p=q;
if(number <>info )
q=p->left;
else
q=p->right;
}
if(number==p->info)
printf("\n DUPLICATE ");
else
{
temp=(struct node*)malloc(sizeof(struct node));
temp->info=number;
temp->left=temp->right=NULL;
if(number <>info)
p->left=temp;
else
p->right=temp;
}
}
}
void postorder(struct node *p)
{
if(p!=NULL)
{
postorder(p->left);
postorder(p->right);
printf("\t\t%d",p->info);
}
}
void inorder(struct node *p)
{
if(p!=NULL)
{
inorder(p->left);
printf("\t\t%d",p->info);
inorder(p->right);
}
}
void preorder(struct node *p)
{
if(p!=NULL)
{
printf("\t\t%d",p->info);
preorder(p->left);
preorder(p->right);
}
}
void delet(struct node *tree,int number)
{
struct node *p,*q,*rp,*f,*s;
p=tree;
q=NULL;
while(p!=NULL & p->info!=number)
{
q=p;
if(number <>info)
p=p->left;
else
p=p->right;
}
if(p==NULL)
{
printf(" Element Not Found ");
return 0;
}
if(p->left==NULL)
rp=p->right;
else if(p->right==NULL)
rp=p->left;
else
{
f=p;
rp=p->right;
s=rp->left;
while(s!=NULL)
{
f=rp;
rp=s;
s=rp->left;
}
if(f!=p)
{
f->left=rp->right;
rp->right=p->right;
}
rp->left=p->left;
}
if(q==NULL)
root=rp;
else
{
if(p==q->left)
q->left=rp;
else
q->right=rp;
}
}
void main()
{
int el,l,v;
int c;
root=NULL;
while(1)
{
printf("\n1.insert\n 2.preorder\n3.inorder");
printf("\n4.postorder\n5.delete 6.exit\n");
printf("\n Enter U r choice\n"); scanf("%d",&c);
switch(c)
{
case 1:
printf("\n Enter Element to insert");
scanf("%d",&v);
insert(root,v);
break;
case 2:
preorder(root);break;
case 3:
inorder(root);break;
case 4:
postorder(root);break;
case 5:
printf("\n Enter Element to Delete");
scanf("%d",&v);
delet(root,v);
break;
case 6:
exit(0);
}
}
}

BINARY SEARCH TREE INSERTION, TRAVERSALS

// BINARY SEARCH TREE INSERTION, TRAVERSALS
struct node
{
int info;
struct node *left,*right;
};
struct node *root;
void insert(struct node *tree,int number)
{
struct node *p,*q,*temp;
p=q=tree;
if(tree==NULL)
{
temp=(struct node*)malloc(sizeof(struct node));
temp->info=number;
temp->left=temp->right=NULL;
root=temp;
}
else
{
while(number !=p->info && q!=NULL)
{
p=q;
if(number <>info )
q=p->left;
else
q=p->right;
}
if(number==p->info)
printf("\n DUPLICATE ");
else
{
temp=(struct node*)malloc(sizeof(struct node));
temp->info=number;
temp->left=temp->right=NULL;
if(number <>info)
p->left=temp;
else
p->right=temp;
}
}
}
void postorder(struct node *p)
{
if(p!=NULL)
{
postorder(p->left);
postorder(p->right);
printf("\t\t%d",p->info);
}
}
void inorder(struct node *p)
{
if(p!=NULL)
{
inorder(p->left);
printf("\t\t%d",p->info);
inorder(p->right);
}
}

void preorder(struct node *p)
{
if(p!=NULL)
{
printf("\t\t%d",p->info);
preorder(p->left);
preorder(p->right);
}
}
void main()
{
int el,l,v;
int c;
root=NULL;
while(1)
{
printf("\n1.insert\n 2.preorder\n3.inorder");
printf("\n4.postorder\n5.exit\n");
printf("\n Enter U r choice\n"); scanf("%d",&c);
switch(c)
{
case 1:
printf("\n Enter Element to insert");
scanf("%d",&v);
insert(root,v);
break;
case 2:
preorder(root);break;
case 3:
inorder(root);break;
case 4:
postorder(root);break;
case 5:
exit(0);
}
}
}

Wednesday, April 1, 2009

Circulur Double Linked List

/*CIRCULUR DOUBLE LINKEDLIST*/
#include
#include
#include
#include
#define newnode (struct node *)malloc(sizeof(struct node ))
struct node
{
struct node *llink;
int info;
struct node *rlink;
};
struct node *p,*head,*q,*temp;
void insert(int pos,int val)
{
int ind=1;
q=newnode;
q->info=val;
p=head;
if(pos==1)
{
if(head==NULL)
{
q->rlink=q;
q->llink=q;
head=q;
}
else
{
q->rlink=p;
p->llink=q;
temp=head;
while(temp->rlink!=head)
{
temp=temp->rlink;
}
temp->rlink=q;
q->llink=temp;
head=q;
}
}
else
{
while((ind!=pos-1)&&(p->rlink!=head))
{
p=p->rlink;
ind++;
}
if(p->rlink==head && ind!=pos-1)
{
printf(" \n The position is NOT Valid ");
}
else
{
q->rlink=p->rlink;
p->rlink->llink=q;
p->rlink=q;
q->llink=p;
}
}
}
void delet(int pos)
{
int ind=1;
struct node *dp;
p=head;
if(head==NULL)
printf(" List is empty ");
else
{
if(pos==1)
{
if(head->rlink==head)
{
free(p);
head=NULL;
}
else
{
dp=p;
while(temp->rlink!=head)
{
temp=temp->rlink;
}
p=p->rlink;
head=p;
p->llink=temp;
temp->rlink=p;
free(dp);
}
}
else
{
while(ind!=pos-1 && p->rlink!=head)
{
p=p->rlink;
ind++;
}
if(p->rlink!=head)
{
temp=p->rlink;
p->rlink=p->rlink->rlink;
p->rlink->llink=p;
free(temp);
}
else
{
printf(" \n The position is NOT Valid ");
}
}
}
}
void display()
{
p=head;
if(p==NULL)
printf(" list is empty");
else
{
printf("\n ");
while(p->rlink!=head)
{
printf("\t%d",p->info);
p=p->rlink;
}
printf("\t%d",p->info);
}
}
void main()
{
int op=99;
int post,v;
head=NULL;
while(1)
{
printf("\n Menu");
printf("\n1.insert");
printf("\n2.delete");
printf("\n3.display");
printf("\n4.exit");
printf("\n Enter U r choice..");
fflush(stdin);
scanf("%d",&op);
switch(op)
{
case 1:printf("\n Enter the pos&val to insert");
fflush(stdin);
scanf("%d%d",&post,&v);
insert(post,v);
break;
case 2:printf("\n Enter the pos delete");
fflush(stdin);
scanf("%d",&post);
delet(post);
break;
case 3:display();
break;
case 4:exit(0);
}
}
}

Double linked list

/* DOUBLE LINKEDLIST*/
#include
#include
#include
#include
#define newnode (struct node *)malloc(sizeof(struct node ))
struct node
{
struct node *llink;
int info;
struct node *rlink;
};
struct node *p,*head,*q;
void insert(int pos,int val)
{
int ind=1;
q=newnode;
q->info=val;
p=head;
if(pos==1)
{
if(head==NULL)
{
q->rlink=NULL;
q->llink=NULL;
head=q;
}
else
{
q->rlink=p;
p->llink=q;
head=q;
}
}
else
{
while((ind!=pos-1)&&(p->rlink!=NULL))
{
p=p->rlink;
ind++;
}
if(p->rlink==NULL && ind!=pos-1)
{
printf(" \n The position is NOT Valid ");
}
else
{
q->rlink=p->rlink;
p->rlink->llink=q;
p->rlink=q;
q->llink=p;
}
}
}
void delet(int pos)
{
int ind=1;
struct node *temp;
p=head;
if(head==NULL)
printf(" List is empty ");
else
{
if(pos==1)
{
if(p->rlink==NULL)
{
free(p);
head=NULL;
}
else
{
temp=p;
p=p->rlink;
head=p;
p->llink=NULL;
free(temp);
}
}
else
{
while(ind!=pos-1 && p->rlink!=NULL)
{
p=p->rlink;
ind++;
}
if(p->rlink!=NULL)
{
temp=p->rlink;
p->rlink=p->rlink->rlink;
p->rlink->llink=p;
free(temp);
}
else
{
printf(" \n The position is NOT Valid ");
}
}
}
}
void display()
{
p=head;
if(p==NULL)
printf(" list is empty");
else
{
printf("\n ");
while(p!=NULL)
{
printf("\t%d",p->info);
p=p->rlink;
}
}
}
void main()
{
int op=99;
int post,v;
head=NULL;
while(1)
{
printf("\n Menu");
printf("\n1.insert");
printf("\n2.delete");
printf("\n3.display");
printf("\n4.exit");
printf("\n Enter U r choice..");
fflush(stdin);
scanf("%d",&op);
switch(op)
{
case 1:printf("\n Enter the pos&val to insert");
fflush(stdin);
scanf("%d%d",&post,&v);
insert(post,v);
break;
case 2:printf("\n Enter the pos delete");
fflush(stdin);
scanf("%d",&post);
delet(post);
break;
case 3:display();
break;
case 4:exit(0);
}
}
}