Ds Prog
Ds Prog
PROGRAM MANUAL
OUTPUT
low=0;
high=n-1;
mid = (low+high)/2;
}
if(item == a[mid])
printf("%d found at position %d: \n",item,mid+1);
if(low>high)
printf("item %d not found in array \n",item);
getch();
OUTPUT
#include<stdio.h>
#include<conio.h>
void main()
{
int len=0;
char s[10];
clrscr();
printf("enter string:");
gets(s);
while(s[len]!='\0')
{
len++;
}
printf("length: %d",len );
getch();
}
OUTPUT
#include<stdio.h>
#include<conio.h>
void main()
{
char source[10],dest[10];
int len=0,i;
clrscr();
printf("enter source string:");
gets(source);
while(source[len]!='\0')
len++;
for(i=0;i<=len;i++)
{
dest[i]=source[i];
}
printf("Destination string : %s",dest);
getch();
}
OUTPUT
OUTPUT
#include<stdio.h>
#include<conio.h>
void main()
{
char s1[60],s2[60];
int i=0,pos,len;
clrscr();
printf("enter string:");
gets(s1);
while(i<len)
{
s2[i]=s1[pos+i-1];
i++;
}
s2[i]='\0';
printf("substring is : %s",s2);
getch();
}
OUTPUT
#include<stdio.h>
#include<conio.h>
void main()
{
char s1[50],s2[50];
int len1=0,len2=0,i,flag;
clrscr();
printf("enter first string:");
gets(s1);
printf("enter second string:");
gets(s2);
while(s1[len1]!='\0')
{
len1++;
}
while(s2[len2]!='\0')
{
len2++;
}
if(len1!=len2)
{
printf("Not equal");
}
else
{
flag=0;
for(i=0;i<=len1;++i)
{
if(s1[i]!=s2[i])
{
flag=1;
break;
}
}
if(flag==1){ printf("Not equal"); }
else { printf("Equal"); }
}
getch();
}
OUTPUT
for(i=0;i<pos;++i)
final[i]=s1[i];
for(i=pos,j=0;j<len2;++j,++i)
final[i]=s2[j];
for(i=len2+pos,j=pos;j<len1;++i,++j)
final[i]=s1[j];
final[len1+len2]= '\0';
printf("New string is : %s",final);
getch();
}
OUTPUT
#include<stdio.h>
#include<conio.h>
void del(char *x,int a,int b);
void main()
{
char s1[60];
int pos,len;
clrscr();
printf("enter string:");
gets(s1);
del(s1,len,pos);
getch();
}
OUTPUT
OUTPUT
#include<stdio.h>
#include<conio.h>
void main()
{
int len=0,i,j;
char s1[10],s2[10];
clrscr();
printf("enter string:");
gets(s1);
while(s1[len]!='\0')
{
len++;
}
for(i=0,j=len-1;i<len;++i,--j)
{
s2[j]=s1[i];
}
s2[len] = '\0';
printf("Reverse string: %s",s2 );
getch();
}
OUTPUT
s2[i] = '\0';
printf("Upper case string: %s",s2 );
getch();
}
OUTPUT
s2[i] = '\0';
printf("Lower case string: %s",s2 );
getch();
}
OUTPUT
#include<stdio.h>
#include<conio.h>
#define size 5
int TOP = -1;
int stack[size];
void push();
void pop();
void display();
void main()
{
int choice;
clrscr();
while(1)
{
printf("1. PUSH \n");
printf("2. POP \n");
printf("3. DISPLAY \n");
printf("4. QUIT \n");
printf("ENTER YOUR CHOICE \n");
scanf("%d",&choice);
switch(choice)
{
case 1:
push();
break;
case 2:
pop();
break;
case 3:
display();
break;
case 4:
exit(1);
default:
printf("wrong choice\n");
}
}
void push()
{
int x;
if(TOP==(size-1))
printf("stack overflow\n");
else
{
printf("enter element to be pushed in stack:");
scanf("%d",&x);
TOP=TOP+1;
stack[TOP]=x;
}
}
void pop()
{
if(TOP == -1)
printf("stack underflow\n");
else
{
printf("popped element is %d\n",stack[TOP]);
TOP=TOP-1;
}
}
void display()
{
int i;
if(TOP == -1)
printf("stack empty\n");
else
{
printf("stack elements:\n");
for(i=TOP;i>=0;i--)
printf("%d\n",stack[i]);
}
}
OUTPUT
#include<stdio.h>
#include<conio.h>
#define size 5
int REAR = -1;
int FRONT = -1;
int queue[size];
void push();
void pop();
void display();
void main()
{
int choice;
clrscr();
while(1)
{
printf("\n\n*****PROGRAM FOR SIMPLE QUEUE USING ARRAY*****\n");
printf("1. PUSH \n");
printf("2. POP \n");
printf("3. DISPLAY \n");
printf("4. QUIT \n");
printf("ENTER YOUR CHOICE \n");
scanf("%d",&choice);
switch(choice)
{
case 1:
push();
break;
case 2:
pop();
break;
case 3:
display();
break;
case 4:
exit(1);
default:
printf("wrong choice\n");
}
void push()
{
int x;
if(REAR==(size-1))
printf("Queue overflow\n");
else
{
if(FRONT==-1)
FRONT=0;
printf("Input element for adding in Queue:");
scanf("%d",&x);
REAR=REAR+1;
queue[REAR]=x;
}
}
void pop()
{
if(FRONT == -1 || FRONT>REAR)
printf("QUEUE underflow\n");
else
{
printf("Element deleted from QUEUE is %d\n",queue[FRONT]);
FRONT=FRONT+1;
}
}
void display()
{
int i;
if(FRONT == -1)
printf("QUEUE empty\n");
else
{
printf("******QUEUE ELEMENTS ARE******\n");
for(i=FRONT;i<=REAR;i++)
printf("%d\n",queue[i]);
}
}
OUTPUT
Implement PUSH & POP algorithm for CIRCULAR QUEUE using ARRAY
#include<stdio.h>
#include<conio.h>
#define size 5
int REAR = -1;
int FRONT = -1;
int cqueue[size];
void push();
void pop();
void display();
void main()
{
int choice;
clrscr();
while(1)
{
printf("\n\n*****PROGRAM FOR CIRCULAR QUEUE USING ARRAY*****\n");
printf("1. PUSH \n");
printf("2. POP \n");
printf("3. DISPLAY \n");
printf("4. QUIT \n");
printf("ENTER YOUR CHOICE \n");
scanf("%d",&choice);
switch(choice)
{
case 1:
push();
break;
case 2:
pop();
break;
case 3:
display();
break;
case 4:
exit(1);
default:
printf("wrong choice\n");
}
}
}
PREPAIRED BY ATUL POLYTECHNIC (CE DEPARTMENT)
C.T.BELANI Page 28
DATA STRUCTURE (3330704)
void push()
{
int x;
if(FRONT==-1)
{
FRONT=0;
REAR=0;
}
else
{
if(REAR==size-1)
REAR=0;
else
REAR=REAR+1;
}
printf("Input element for adding in Circular Queue:");
scanf("%d",&x);
cqueue[REAR]=x;
}
void pop()
{
if(FRONT == -1)
printf("QUEUE underflow\n");
printf("Element deleted from CIRCULAR QUEUE is %d\n",cqueue[FRONT]);
if(FRONT==REAR)
{
FRONT= -1;
REAR = -1;
}
else
{
if(FRONT==size-1)
FRONT=0;
else
FRONT=FRONT+1;
}
}
PREPAIRED BY ATUL POLYTECHNIC (CE DEPARTMENT)
C.T.BELANI Page 29
DATA STRUCTURE (3330704)
void display()
{
int front_pos=FRONT,rear_pos=REAR;
if(FRONT == -1)
printf("QUEUE empty\n");
OUTPUT
FACTORIAL
#include<stdio.h>
#include<conio.h>
int fact(int);
void main()
{
int f,n;
clrscr();
printf("enter a number::");
scanf("%d",&n);
f=fact(n);
printf("factorial of %d is %d",n,f);
getch();
}
int fact(int n)
{
int f=1;
if(n==1)
return(f);
f=n*fact(n-1);
return(f);
}
OUTPUT
FIBONACI SERIES
#include<stdio.h>
#include<conio.h>
void fib(int,int,int);
void main()
{
int f1=0,f2=1,n;
clrscr();
int f3;
f3=f1+f2;
printf("%d\t",f3);
n--;
if(n>0)
fib(f2,f3,n);
}
OUTPUT
CREATE NODE
DISPLAY NODE
INSERT AT FIRST POSITION
INSERT AT SPECIFIC POSITION
#include<stdio.h>
#include<malloc.h>
struct node
{
int data;
struct node *link;
}*start;
void create(int);
void display();
void insert_start(int);
void insert_specific(int,int);
void main()
{
int choice,n,m,position,i;
start=NULL;
clrscr();
while(1)
{
printf("\n\n*****PROGRAM FOR SINGLE LINK LIST USING
POINTER*****\n");
printf("1. ENTER 1 FOR CREATE NODE \n");
printf("2. ENTER 2 FOR DISPLAY \n");
printf("3. ENTER 3 FOR INSERT AT FIRST \n");
printf("4. ENTER 4 FOR INSERT AT SPECIFIC POSITION \n");
printf("5. ENTER 5 FOR EXIT\n");
printf("ENTER YOUR CHOICE \n");
scanf("%d",&choice);
switch(choice)
{
case 1:
printf("How many nodes you want:");
scanf("%d",&n);
for(i=0;i<n;i++)
PREPAIRED BY ATUL POLYTECHNIC (CE DEPARTMENT)
C.T.BELANI Page 36
DATA STRUCTURE (3330704)
{
printf("Enter element:");
scanf("%d",&m);
create(m);
}
break;
case 2:
display();
break;
case 3:
printf("Enter element:");
scanf("%d",&m);
insert_start(m);
break;
case 4:
printf("Enter element:");
scanf("%d",&m);
printf("Enter the position after which this elememt is
inserted:");
scanf("%d",&position);
insert_specific(m,position);
break;
case 5:
exit(1);
default:
printf("wrong choice\n");
}
}
}
{
q=start;
while(q->link!=NULL)
q=q->link;
q->link=tmp;
}
}
void display()
{
struct node *q;
if(start==NULL)
{
printf("List is empty\n");
return;
}
q=start;
printf("\n**********SINGLE LINK LIST NODES ARE AS FOLLOWS**********\n");
while(q!=NULL)
{
printf( "\n%d",q->data);
q=q->link;
}
}
q=q->link;
if(q==NULL)
{
printf("There are less than %d elements",pos);
return;
}
}
tmp= malloc(sizeof(struct node));
tmp->link=q->link;
tmp->data=inserted_value;
q->link=tmp;
}
OUTPUT
CREATE NODE
DISPLAY NODE
CREATE NODE
DISPLAY NODE
DELETE NODE
SEARCH NODE
#include<stdio.h>
#include<malloc.h>
struct node
{
int data;
struct node *link;
}*start;
void create(int);
void display();
void del(int);
void search(int);
void main()
{
int choice,n,m,position,i;
start=NULL;
clrscr();
while(1)
{
printf("\n\n*****PROGRAM FOR SINGLE LINK LIST USING
POINTER*****\n");
printf("1. ENTER 1 FOR CREATE NODE \n");
printf("2. ENTER 2 FOR DISPLAY \n");
printf("3. ENTER 3 FOR DELETE \n");
printf("4. ENTER 4 FOR SEARCH \n");
printf("5. ENTER 5 FOR EXIT\n");
printf("ENTER YOUR CHOICE \n");
scanf("%d",&choice);
switch(choice)
{
case 1:
printf("How many nodes you want:");
scanf("%d",&n);
for(i=0;i<n;i++)
PREPAIRED BY ATUL POLYTECHNIC (CE DEPARTMENT)
C.T.BELANI Page 42
DATA STRUCTURE (3330704)
{
printf("Enter element:");
scanf("%d",&m);
create(m);
}
break;
case 2:
display();
break;
case 3:
if(start==NULL)
{
printf("List is empty\n");
continue;
}
printf("Enter the element for deletion:");
scanf("%d",&m);
del(m);
break;
case 4:
printf("Enter the element to be searched:");
scanf("%d",&m);
search(m);
break;
case 5:
exit(1);
default:
printf("wrong choice\n");
}
}
}
start=tmp;
else
{
q=start;
while(q->link!=NULL)
q=q->link;
q->link=tmp;
}
}
void display()
{
struct node *q;
if(start==NULL)
{
printf("List is empty\n");
return;
}
q=start;
printf("\n**********SINGLE LINK LIST NODES ARE AS FOLLOWS**********\n");
while(q!=NULL)
{
printf( "\n%d",q->data);
q=q->link;
}
}
tmp=q->link;
q->link=tmp->link;
free(tmp);
return;
}
q=q->link;
}
OUTPUT
CREATE NODE
DISPLAY NODE
DELETE NODE
SEARCH NODE
CREATE NODE
DISPLAY NODE
INSERT AT FIRST POSITION
INSERT AT SPECIFIC POSITION
#include<stdio.h>
#include<malloc.h>
struct node
{
struct node *prev;
int data;
struct node *next;
}*start;
void create(int);
void display();
void insert_start(int);
void insert_specific(int,int);
void main()
{
int choice,n,m,position,i;
start=NULL;
clrscr();
while(1)
{
printf("\n\n*****PROGRAM FOR DOUBLY LINK LIST USING
POINTER*****\n");
printf("1. ENTER 1 FOR CREATE NODE \n");
printf("2. ENTER 2 FOR DISPLAY \n");
printf("3. ENTER 3 FOR INSERT AT FIRST \n");
printf("4. ENTER 4 FOR INSERT AT SPECIFIC POSITION \n");
printf("5. ENTER 5 FOR EXIT\n");
printf("ENTER YOUR CHOICE \n");
scanf("%d",&choice);
switch(choice)
{
case 1:
printf("How many nodes you want:");
scanf("%d",&n);
PREPAIRED BY ATUL POLYTECHNIC (CE DEPARTMENT)
C.T.BELANI Page 49
DATA STRUCTURE (3330704)
for(i=0;i<n;i++)
{
printf("Enter element:");
scanf("%d",&m);
create(m);
}
break;
case 2:
display();
break;
case 3:
printf("Enter element:");
scanf("%d",&m);
insert_start(m);
break;
case 4:
printf("Enter element:");
scanf("%d",&m);
printf("Enter the position after which this elememt is
inserted:");
scanf("%d",&position);
insert_specific(m,position);
break;
case 5:
exit(1);
default:
printf("wrong choice\n");
}
}
}
tmp->prev=NULL;
start->prev=tmp;
start=tmp;
}
else
{
q=start;
while(q->next!=NULL)
q=q->next;
q->next=tmp;
tmp->prev=q;
}
}
void display()
{
struct node *q;
if(start==NULL)
{
printf("List is empty\n");
return;
}
q=start;
printf("\n**********DOUBLY LINK LIST NODES ARE AS FOLLOWS**********\n");
while(q!=NULL)
{
printf( "\n%d",q->data);
q=q->next;
}
}
OUTPUT
CREATE NODE
DISPLAY NODE
CREATE NODE
DISPLAY NODE
DELETE NODE
COUNT NODE
#include<stdio.h>
#include<malloc.h>
struct node
{
struct node *prev;
int data;
struct node *next;
}*start;
void create(int);
void display();
void del(int);
void count();
void main()
{
int choice,n,m,position,i;
start=NULL;
clrscr();
while(1)
{
printf("\n\n*****PROGRAM FOR DOUBLY LINK LIST USING
POINTER*****\n");
printf("1. ENTER 1 FOR CREATE NODE \n");
printf("2. ENTER 2 FOR DISPLAY \n");
printf("3. ENTER 3 FOR DELETE \n");
printf("4. ENTER 4 FOR COUNT \n");
printf("5. ENTER 5 FOR EXIT\n");
printf("ENTER YOUR CHOICE \n");
scanf("%d",&choice);
switch(choice)
{
case 1:
printf("How many nodes you want:");
scanf("%d",&n);
PREPAIRED BY ATUL POLYTECHNIC (CE DEPARTMENT)
C.T.BELANI Page 56
DATA STRUCTURE (3330704)
for(i=0;i<n;i++)
{
printf("Enter element:");
scanf("%d",&m);
create(m);
}
break;
case 2:
display();
break;
case 3:
printf("Enter element to be deleted:");
scanf("%d",&m);
del(m);
break;
case 4:
count();
break;
case 5:
exit(1);
default:
printf("wrong choice\n");
}
}
}
else
{
q=start;
while(q->next!=NULL)
q=q->next;
q->next=tmp;
tmp->prev=q;
}
}
void display()
{
struct node *q;
if(start==NULL)
{
printf("List is empty\n");
return;
}
q=start;
printf("\n**********DOUBLY LINK LIST NODES ARE AS FOLLOWS**********\n");
while(q!=NULL)
{
printf( "\n%d",q->data);
q=q->next;
}
}
q->next=tmp->next;
tmp->next->prev=q;
free(tmp);
return;
}
q=q->next;
}
void count()
{
struct node *q=start;
int cnt=0;
while(q!=NULL)
{
q=q->next;
cnt++;
}
printf("Number of elements are %d\n",cnt);
}
OUTPUT
CREATE NODE
DISPLAY NODE
DELETE NODE
COUNT NODE
#include<stdio.h>
#include<conio.h>
#define m 20
void main()
{
int a[m],i,j,k,temp,n,exchange;
clrscr();
printf("\n**********BUBBLE SORTING**********");
printf("\n\nEnter the number of elements:");
scanf("%d",&n);
for(i=0;i<n;i++)
{
printf("Enter elements %d:",i+1);
scanf("%d",&a[i]);
}
printf("Unsorted List is: \n");
for(i=0;i<n;i++)
printf("%d\n",a[i]);
printf("\n");
for(i=0;i<n-1;i++)
{
exchange=0;
for(j=0;j<n-1-i;j++)
{
if(a[j]>a[j+1])
{
temp=a[j];
a[j]=a[j+1];
a[j+1]=temp;
exchange++;
}
}
}
printf("Sorted List is: \n");
for(i=0;i<n;i++)
printf("%d\n",a[i]);
getch();
OUTPUT
#include<stdio.h>
#include<conio.h>
#define m 20
void main()
{
int a[m],i,j,k,temp,n,smallest;
clrscr();
printf("\n**********SELECTION SORTING**********");
printf("\n\nEnter the number of elements:");
scanf("%d",&n);
for(i=0;i<n;i++)
{
printf("Enter elements %d:",i+1);
scanf("%d",&a[i]);
}
printf("Unsorted List is: \n");
for(i=0;i<n;i++)
printf("%d\n",a[i]);
printf("\n");
for(i=0;i<n-1;i++)
{
smallest=i;
for(k=i+1;k<n;k++)
{
if(a[smallest]>a[k])
smallest=k;
}
if(i!=smallest)
{
temp=a[i];
a[i]=a[smallest];
a[smallest]=temp;
}
}
printf("Sorted List is: \n");
for(i=0;i<n;i++)
printf("%d\n",a[i]);
getch();
OUTPUT
for(j=1;j<n;j++)
{
k=a[j];
for(i=j-1;i>=0&&k<a[i];i--)
a[i+1]=a[i];
a[i+1]=k;
}
printf("Sorted List is: \n");
for(i=0;i<n;i++)
printf("%d\n",a[i]);
getch();
OUTPUT
while(pivot_placed == FALSE)
PREPAIRED BY ATUL POLYTECHNIC (CE DEPARTMENT)
C.T.BELANI Page 68
DATA STRUCTURE (3330704)
{
while(ar[piv]<=ar[right]&&piv!=right)
right=right-1;
if(piv==right)
pivot_placed == TRUE;
if(ar[piv]>ar[right])
{
temp=ar[piv];
ar[piv]=ar[right];
ar[right]=temp;
piv=right;
}
while(ar[piv]>=ar[left]&&left!=piv)
left=left+1;
if(piv==left)
pivot_placed = TRUE;
if(ar[piv]<ar[left])
{
temp=ar[left];
ar[piv]=ar[left];
ar[left]=temp;
piv=left;
}
OUTPUT
for(size=1;size<n;size=size*2)
{
l1=0;
k=0;
while(l1+size<n)
{
h1=l1+size-1;
l2=h1+1;
h2=l2+size-1;
if(h2>=n)
h2=n-1;
i=l1;
j=l2;
while(i<=h1&&j<=h2)
{
if(a[i]<=a[j])
save[k++]=a[i++];
else
save[k++]=a[j++];
}
while(i<=h1)
save[k++]=a[i++];
while(j<=h2)
PREPAIRED BY ATUL POLYTECHNIC (CE DEPARTMENT)
C.T.BELANI Page 71
DATA STRUCTURE (3330704)
save[k++]=a[j++];
l1=h2+1;
}
for(i=l1;k<n;i++)
save[k++]=a[i];
for(i=0;i<n;i++)
a[i]=save[i];
printf("\n\nSize=%d\n \nElements are:",size);
for(i=0;i<n;i++)
printf("\n%d",a[i]);
}
getch();
}
OUTPUT
while(incre>=1)
{
for(j=incre;j<n;j++)
{
k=a[j];
for(i=j-incre;i>=0 && k<a[i];i=i-incre)
a[i+incre]=a[i];
a[i+incre]=k;
}
printf("\nIncrement = %d\n",incre);
for(i=0;i<n;i++)
printf("\n%d",a[i]);
incre=incre-2;
}
printf("\nSorted List is: \n");
for(i=0;i<n;i++)
printf("\n%d",a[i]);
getch();
}
PREPAIRED BY ATUL POLYTECHNIC (CE DEPARTMENT)
C.T.BELANI Page 74
DATA STRUCTURE (3330704)
OUTPUT
IMPLEMENT TREE
#include<stdio.h>
#include<malloc.h>
struct node
{
int info;
struct node *lchild;
struct node *rchild;
}*root;
void insert(int);
void display();
void find();
void main()
{
int choice,n;
root=NULL;
clrscr();
while(1)
{
printf("\n\n*****PROGRAM FOR TREE*****\n");
printf("1. ENTER 1 FOR INSERT\n");
printf("2. ENTER 2 FOR DISPLAY \n");
printf("3. ENTER 3 FOR EXIT\n");
printf("ENTER YOUR CHOICE \n");
scanf("%d",&choice);
switch(choice)
{
case 1:
printf("Enter element to be inserted:");
scanf("%d",&n);
insert(n);
break;
case 2:
display(root,1);
break;
case 3:
exit(1);
PREPAIRED BY ATUL POLYTECHNIC (CE DEPARTMENT)
C.T.BELANI Page 76
DATA STRUCTURE (3330704)
default:
printf("wrong choice\n");
}
}
}
while(ptr!=NULL)
{
if(item==ptr->info)
{
*loc=ptr;
*par=ptrsave;
return;
}
ptrsave=ptr;
if(item<ptr ->info)
ptr=ptr->lchild;
else
ptr=ptr->rchild;
}
*loc=NULL;
*par=ptrsave;
}
find(item,&parent,&location);
if(location!=NULL)
{
printf("Item already present");
return;
}
tmp=(struct node*)malloc(sizeof(struct node));
tmp->info = item;
tmp->lchild=NULL;
tmp->rchild=NULL;
if(parent==NULL)
root=tmp;
else
if(item<parent ->info)
parent->lchild=tmp;
else
parent->rchild=tmp;
OUTPUT