Your Federal Quarterly Tax Payments are due April 15th

1)write a program to evaluates the following algebraic expressions by d9n1aQO

VIEWS: 12 PAGES: 49

• pg 1
```									                         COMPUTER PROGRAMMING LAB

Program-1:
Write a program to evaluates the following algebraic expressions after reading
necessary values from the user.

Program-1(a):
Aim: Compute expression (ax+b)/(ax-b).

1.start
3.if((a*x-b)!=0) then
4. begin
5.      c=(a*x+b)/(a*x-b);
6.      write c
7. end if
8. otherwise
9. “division is not possible”
10. stop

Program-1(b):

Aim: Evaluate the expression 2.5logx+320+|x2-y2|+        2xy

1.start
3.if(x!=0) then
4. begin
5.      z=2.5logx+320+|x2-y2|+ 2xy;
6.      write z
7. end if
8. otherwise
9. “Expression Evaluation is not possible”
10. Stop

Program-1(c):
Aim : Evaluate the expression 1/(     2)e (-(x-m)/   2s)) 2

1.start
3.if(s!=0) then
4. begin
5.      z=1/( 2)e (-(x-m)/ 2s)) 2

6.      write z
7. end if
8. otherwise
9. “Expression Evaluation is not possible”
10. Stop

1
COMPUTER PROGRAMMING LAB

Program-2(a):

Aim : Printing three given integers in ascending order

1.start
3. if(a>b) then
4.       Interchange a and b
5. Otherwise if(a>c) then
6.                  Interchange a and c
7.              Otherwise if(b>c) then
8.                         Interchange b and c
9. Write a, b and c
10.Stop.

Program-2(b):

Aim: Compute Sum of 1 + 2+ 3 + _ _ _ _ _ n
.
1.start
3. initialize i=1,sum=0
4.if(i<=n) then
5.begin
6. sum=sum+i;
7. i++;
8. goto step 4.
9. end if
10. otherwise Write sum
10.Stop.

Program-2(c):

Aim: Compute sum of 1 + x2/2! + x2/ 4!+ _ _ _ _ _ upto ten terms

1.start
3. initialize i=1,sum=1
4.if(i<7) then
5.begin
6. sum=sum+(x*x)/fact (2*i); /* Here fact( ) is a factorial function we have to write it
in a program while implementing */
7. i++;
8.goto step 4.
9. end if
10. otherwise Write sum
11.Stop.

2
COMPUTER PROGRAMMING LAB

Program-2(d):

Aim: Compute sum x +x3/3! + x5/5!+ _ _ _ _ _ upto 7TH   digit accuracy

1.start
3. initialize i=0,sum=0
4.if(i<=7) then
5.begin
6. l=2*i+1;
11. sum=sum+(xl)/fact(l); /* Here fact( ) is a factorial function we have to write it in a
program while implementing */
12. i++;
13. goto step 4.
14. end if
15. otherwise Write sum
10.Stop.

Program-2(e):

Aim : Read x and compute y=1 for x>0
y=0 for x=0
y=-1 for x<0
1.start
3.if(x>0) then
4.    y=1;
5.      otherwise if(x==0) then
6.                    y=0;
7.       otherwise y=-1;
8.write y.
9. stop

3
COMPUTER PROGRAMMING LAB

Program-3:

Aim : write c program using for statement to find the following from a given set of 20
integers
a) total number of even integers b) total number of odd integers
c) sum of all even integers    d) sum of all odd integers

Output : Write total no. of even and odd integers and also write sum of even and odd
integers.

1. Start
2. Initialize i=1,SE=SO=TE=TO=0
3. if(i<=20) then
4. begin
6.   if(n%2==0)
7.   {
8.        TE++;
9.        SE=SE+n;
10 }
11. else
12. {
13.       TO++;
14.       SO=SO+n;
15.    }
16. i++;
17. goto step 3.
18. end if /* first if */
19. otherwise
20. write TE,TO,SE,SO
21. Stop.

4
COMPUTER PROGRAMMING LAB

Program-4:

Aim: Write a C program to obtain the product of two matrices A of size (3X3) and
B of size (3X2). The resultant matrix C is to be printed out along with A and
B. Assume suitable values for A & B.

Input: Read two 3 * 3 matrices say A and B.
Output : Write matrix C.

1. Start
2. Read matrices A and B of order 3*3
3. i=0;
4. if(i<3) then
5. {
6. j=0;
7. if(j<3) then
8. {
9. c[i][j]=0;
10. k=0;
11. if(k<3) then
12. {
13. c[i][j]=c[i][j]+a[i][k]*b[k][j];
14. }
15. k++; goto step 11.
16. j++; goto step 7.
17. }
18. i++; goto step 4.
19. }
20. Write matrices A,B,C.
21. Stop

5
COMPUTER PROGRAMMING LAB

Program-5:

Aim : Using switch-case statement, write a C program that takes two operands
and one operator from the user, performs the operation and then prints
the answer. (consider operators +,-,/,* and %).

Input : Two operands and one operator.
Output : Computed result of respective arithmetic exp.

1.Start
2.Read a,b and any one Operator(op)
3.if(op== '+') then
4.          c=a+b;
5.      .else if(op==’-‘) then
6.           c=a-b;
7.            else If(op==’/’) then
8.                c=a/b;
9.               else If(op==’*’) then
10.                      c=a*b;
11                        else If(op==’%’) then
12.                               c=a%b;
13                               end if
14.                             Write c
15. Stop.

6
COMPUTER PROGRAMMING LAB

Program-6:

Aim: Write C procedures to add, subtract, multiply and divide two complex
numbers (x+iy) and (a+ib).Also write the main program that uses these
procedures.

{
z1=a+x;
z2=b+y;
Write z1,z2
}

2. Subtraction Procedure

sub( )
{
z1=a-x;
z2=b-y;
Write z1,z2
}

3. Multiplication Procedure

mul( )
{
z1=a*x-b*y;
z2=a*y+b*x;
Write z1,z2
}

5. Division Procedure

div( )
{
z1=(a*x+b*y)/(x*x+y*y);
z2=(b*x-a*y)/(x*x+y*y);
Write z1,z2
}

7
COMPUTER PROGRAMMING LAB

Program-7:

Aim The total distance traveled by vehicle in ‘t’ seconds is given by
distance = ut+1/2at2 where ‘u’ and ‘a’ are the initial velocity (m/sec.) and
acceleration (m/sec2). Write C program to find the distance traveled at
regular intervals of time given the values of ‘u’ and ‘a’. The program
should provide the flexibility to the user to select his own time intervals
and repeat the calculations for different values of ‘u’ and ‘a’.

1.Start
2.Read the regular time interval( t1 & t2 )values
3.Repeat
4. {
5. Read the values of intial velocity(u) and accelaration(a)
6. d=u*t1+0.5*a*t1*t1;
7. t1=t1+2;
8. Write d
9. }
10. until (t1<=t2);
11.Stop.

8
COMPUTER PROGRAMMING LAB

Program-8:

Aim:
A cloth show room has announced the following seasonal discounts on purchase
of items.

Purchase Amount                            Discount (Percentage)
Mill Cloth       Handloom items
1-100                                  -              5.0
101-200                               5.0               7.5
201-300                               7.5             10.0
Above 300                            10.0             15.0

Write a C program using switch and If statements to complete the net amount to
be paid by a customer.

1.Start
2.Read the type of item to be purchased.
4.if purchased item is mill cloths then
5.      if(pa>=1 && pa<=100)
6.                dis=0;
7.             else if(pa>=101 && pa<=200)
8.                      dis=5;
9.                else if(pa>=201 && pa<=300)
10.                         dis=7.5;
11.                      else if(pa>300)
12.                             dis=10;
13.            na=na+(pa-(dis*pa)/100);
14. Otherwise if(pa>=1 && pa<=100)
15.              dis=5.0;
16.           else if(pa>=101 && pa<=200)
17.                    dis=7.5;
18.              else if(pa>=201 && pa<=300)
19.                        dis=10;
20.                     else if(pa>300)
21.                            dis=15;
22.           na=na+(pa-(dis*pa)/100);
23. Repeat the process on number of purchases.
24.Write “Net Amount To Be Paid By Customer is :” , na
25.Stop.

9
COMPUTER PROGRAMMING LAB

Program-9:

Aim : Given a number, write C program using while loop to reverse the digits of
the number. Example 1234 to be written as 4321.

1.Start
2.Read the number to be reversed.
3. Initialize rev=0.
4.if(n>0)
5. begin
6. rem=n%10;
7. rev=rev*10+rem;
8. n=n/10;
9. goto step 4.
10. end if
11.otherwise Write “the reverse number is ",rev
12.stop.

10
COMPUTER PROGRAMMING LAB
Program-10:

Aim : The Fibonacci sequence of numbers is 1,1,2,3,5,8… based on the
recurrence relation f(n) = f (n-1) + f (n-2) for n>2.

Write C program using d0-while to calculate and print the first m fibonacci
numbers.

1.start
3.initialize i=3,a=0,b=1.
4.write a,b.
5.if(i<=m) then
6. begin
7.      c=a+b;
8. Write c
9. a=b;
10 b=c;
11 i++;
12 goto step 5.
13 end if
14. Otherwise stop.

11
COMPUTER PROGRAMMING LAB

Program-11 :

Aim : 11. Write C programs to print the following outputs using for loop.
1                                         1
22                                    2       2
333                               3       3       3
4444                          4       4       4       4

Program-11(a):

Aim : Program to the Triangle Format.

#include<stdio.h>
main()
{
int i,j,n;
clrscr();
printf("enter any number\n");
scanf("%d",&n);
for(i=0;i<=n;i++)
{
for(j=1;j<=i;j++)
{
printf(" %d",i);
}
printf("\n");
}
getch();
}

/* SAMPLE OUTPUT

enter any number
5

1
22
333
4444

*/

12
COMPUTER PROGRAMMING LAB

Program-11(b):

Aim : Program to print Equilateral Triangle Format

#include<stdio.h>
main()
{
int i,j,k,n;
clrscr();
printf("enter any number\n");
scanf("%d",&n);
for(i=1;i<=n;i++)
{
for(j=3;j>i-1;j--)
{
printf(" ");
}
for(k=1;k<=i;k++)
{
printf(" %d",i);
}
printf("\n");
}
getch();
}

/* SAMPLE OUTPUT
enter any number
5
1
22
333
4444         */

13
COMPUTER PROGRAMMING LAB

Program-12:

Aim : Write a C program to extract a portion of a character string and print the
extracted string. Assume that m characters are extracted starting with the
nth character

#include<stdio.h>
main()
{
char str[50],substr[30];
int m,n,i,j;
clrscr();
printf("Enter the Original String\n\n");
flushall();
gets(str);
printf("\nEnter the position and number of characters to be extracted from the string\n");
scanf("%d%d",&m,&n);
for(j=1,i=0;j<=n;m++,j++,i++)
substr[i]=str[m-1];
substr[i]='\0';
printf("\nExtracted String is : %s",substr);
getch();
}

/* Sample Output :
Enter the Original String

Vignan Inst. Of Tech. & Science

Enter the position and number of characters to be extracted from the string
3
10
Extracted String is : gnan Inst.
*/

14
COMPUTER PROGRAMMING LAB

Program-13:

Aim : A Maruthi Car dealer maintains a record of sales of various vehicles in the
following form :

Vehicle type                               Month of Sales             Price (Rs).

Maruthi – 800                                   02/87                     75,000
Maruthi – DX                                    07/87                     95,000
Gypsy                                           04/88                   1,10,000
Maruthi Van                                     08/88                     85,000

Write a C program to read this data into a table of strings and output the details
of a particular vehicle sold during a specified period. The program should request
the user to input the vehicle type and the period (starting month & ending month).

#include<stdio.h>

struct car
{
char name[40];
int mm,yy;
int price;
}s[40];

main()
{
int sm,em,i=0,count=0;
char ch,c_name[20];
clrscr();
do
{
flushall();
printf("Enter the type of the car\n");
gets(s[i].name);
printf("Month , year and cost of purchasing\n");
scanf("%d%d%d",&s[i].mm,&s[i].yy,&s[i].price);
printf("Do U Want to Continue...(press Y / N)\n");
flushall();
ch=getchar();
i++;
count++;
}while(ch=='Y');

15
COMPUTER PROGRAMMING LAB

printf("CAR TYPE           MM/YY PRICE\n");
for(i=0;i<count;i++)
{
printf("%s          %d/%d       %d\n",s[i].name,s[i].mm,s[i].yy,s[i].price);
}
printf("Enter car type, starting and ending month of sold\n");
flushall();
gets(c_name);
scanf("%d%d",&sm,&em);
printf("CAR TYPE           MM/YY        PRICE\n");
for(i=0;i<count;i++)
{
if(strcmp(s[i].name,c_name)==0 && (s[i].mm>=sm &&s[i].mm<=em))
printf("%s       %d/%d        %d\n",s[i].name,s[i].mm,s[i].yy,s[i].price);
}
getch();
}
/* SAMPLE OUTPUT
Enter the type of the car
Maruthi-800
Month , year and cost of purchasing
2
98
23000
Do U Want to Continue...(press Y / N)
Y
Enter the type of the car
Van
Month , year and cost of purchasing
4
89
45000
Do U Want to Continue...(press Y / N)
N
CAR TYPE            MM/YY        PRICE

Maruthi-800         2/98       23000
Van                 4/89      30000
Maruthi-800          5/99     31000

Enter car type, starting and ending month of sold
Maruthi-800
1
7
CAR TYPE MM/YY PRICE
Maruthi-800      2/98      23000
Maruthi-800      4/99      31000 */

16
COMPUTER PROGRAMMING LAB

Program-14:

Aim : Write a function that will scan a character string passed as an argument
and covert all lower case characters into their upper case equivalents.

void string_u(char *s)
{
while(*s!='\0')
{
if(*s>='a' && *s<='z')
*s=*s-32;
s++;
}
}

main()
{
char str[30];
clrscr();
printf("Enter Any String\n");
gets(str);
string_u(str);
printf("Uppar Case String Is : %s",str);
getch();
}

/*SAMPLE OUTPUT

Enter Any String
vignan

Uppar Case String Is : VIGNAN

*/

17
COMPUTER PROGRAMMING LAB

Program-15(i):
Aim : IMPLEMENTATION OF STACK USING ARRAYS.

Algorithm for Push operation:
1.void push(int x)
2.{
3. if(top==MAX-1)
4. {
5. printf("STACK IS OVERFLOW\n");
6. return;
7. }
8. stack[++top]=x;
9. }

Algorithm for Pop operation:
1.int pop()
2.{
3. if(top==-1)
4. {
5. printf("STACK IS UNDERFLOW\n");
6. return(-1);
7. }
8. return(stack[top--]);
9.}

Algorithm for stacktop operation:
1.int stacktop()
2.{
3. if(top==-1)
4. {
5. printf("STACK IS UNDERFLOW\n");
6. return(-1);
7. }
8. return(stack[top]);
9.}

Algorithm for Display operation:
1.void display()
2.{
3. int i;
4. if(top==-1)
5. {
6. printf("STACK IS UNDERFLOW\n");
7. return;
8. }
9. for(i=top;i>=0;i--)
10. printf("%d\t",stack[i]);
11.}

18
COMPUTER PROGRAMMING LAB

Program-15(ii):

Aim :Implementation of Linear Queue using arrays

Algorithm for insert operation:

1.void insert(int x)
2.{
3. if(rear==MAX-1)
4. {
5. printf(" Ovedrflow\n");
6. return;
7. }
8. queue[++rear]=x;
9. }

Algorithm for delete operation:

1.int delete()
2.{
3.if(rear<front)
4.{
5. printf("Queue Is Underflow\n");
6. return(0);
7. }
8. return(queue[front--]);
9}

Algorithm for Display operation:

1. void display()
2. {
3. int i;
4. for(i=0;i<=rear;i++)
5.     printf("%d\t",queue[i]);
6.}

19
COMPUTER PROGRAMMING LAB
Program-15(iii):
Aim :Implementation of Circular Queue using arrays

Algorithm for insert operation:

1.void c_insert(int x)
2.{
3.if(rear==MAX-1)
4. rear=0;
5. else
6. ++rear;
7. if(rear==front)
8.{
9. printf(" Ovedrflow\n");
10. rear--;
11. return;
12. }
13. cq[rear]=x;
14. }

Algorithm for delete operation:

1.int c_delete()
2.{
3. if(rear==front)
4. {
5. printf("Circular Q Underflow\n");
6. return(0);
7. }
8. if(front==MAX-1)
9. front=0;
10. else
11. ++front;
12. return(cq[front]);
13.}

Algorithm for Display operation:

1.void c_display()
2.{
3. int i;
4. if(front==MAX-1)
5. i=0;
6. else
7. i=front+1;
8. for(;i!=rear;i=(i+1)%MAX)
9.     printf("%d\t",cq[i]);
10. printf("%d",cq[i]);
}

20
COMPUTER PROGRAMMING LAB

Program-16:

Aim : . Implement binary search tree using linked list and perform the following
operations.
i) Insertion ii) Deletion iii) Inorder Traversal iv) Preorder Traversal
v) Post Order Traversal

#include<stdio.h>

struct BST
{
struct BST *l;
int data;
struct BST *r;
};
typedef struct BST NODE;
NODE *root=NULL,*temp,*prev,*cur,*new;
void create();
void insert();
void delete(int);
void inorder(NODE *);
void preorder(NODE *);
void postorder(NODE *);

main()
{
int choice,x;
clrscr();
printf("IMPLEMENTATION OF BINARY SEARCH TREE \n");
while(1)
{
printf("\n1.Create\n2.Insert\n3.Delete\n4.Inorder\n5.Preorder\n6.Postorer\n7.Exit\n");
scanf("%d",&choice);
switch(choice)
{
case 1: create();
break;
case 2: temp=(struct BST *)(malloc(sizeof(struct BST)));
printf("Which Value U Want to Enter : ");
scanf("%d",&x);
temp->l=NULL;
temp->data=x;
temp->r=NULL;
insert();
break;

21
COMPUTER PROGRAMMING LAB
case 3: printf("Which Element U Want To Delete From The BST : ");
scanf("%d",&x);
delete(x);
break;
case 4: printf("Result Of Inorder Traversal Is : \n");
inorder(root);
break;
case 5: printf("Result Of Preorder Traversal Is : \n");
preorder(root);
break;
case 6: printf("Result Of Postorder Traversal Is : \n");
postorder(root);
break;
case 7: exit(0);

default:
printf("Invalid choice\n");
}
}
getch();
}

void create()
{
int c,x;
do
{
temp=(struct BST *)(malloc(sizeof(struct BST)));
printf("Which Value U Want to Enter : ");
scanf("%d",&x);
temp->l=NULL;
temp->data=x;
temp->r=NULL;
if(root==NULL)
{
root=temp;
}
else
{
prev=cur=root;
while(cur!=NULL)
{
prev=cur;
if(temp->data<cur->data)
cur=cur->l;
else
cur=cur->r;
}

22
COMPUTER PROGRAMMING LAB
if(temp->data<prev->data)
prev->l=temp;
else
prev->r=temp;
}
printf("Do U Want To Cont...Press->1 / 0 : ");
scanf("%d",&c);
}
while(c==1);
}

void insert()
{
if(root==NULL)
{
root=temp;
}
else
{
cur=root;
while(cur!=NULL)
{
prev=cur;
if(temp->data<cur->data)
cur=cur->l;
else
cur=cur->r;
}
if(temp->data<prev->data)
prev->l=temp;
else
prev->r=temp;
}
}

void delete(int x)
{
int found=0;
temp=root;
while(1)
{
if(temp==NULL)
break;
if(x==temp->data)
{
found=1;
break;
}

23
COMPUTER PROGRAMMING LAB
if(x<temp->data)
temp=temp->l;
else
temp=temp->r;
}
if(found==0)
{
return;
}
cur=root;
while(x!=cur->data)
{
prev=cur;
if(x<cur->data)
cur=cur->l;
else
cur=cur->r;
}
if(cur->l==NULL && cur->r==NULL)
{
if(prev->l==cur)
prev->l=NULL;
else
prev->r=NULL;
}
if(cur->l==NULL && cur->r!=NULL)
{
if(prev->l==cur)
prev->l=cur->r;
else
prev->r=cur->r;
}
if(cur->l!=NULL && cur->r==NULL)
{
if(prev->r==cur)
prev->r=cur->l;
else
prev->l=cur->l;
}
if(cur->l!=NULL && cur->r!=NULL)
{
if(cur==root)
root=root->r;
temp=cur->r;
while(temp->l!=NULL)
temp=temp->l;
temp->l=cur->l;

24
COMPUTER PROGRAMMING LAB
if(cur!=root)
{
if(prev->l==cur)
prev->l=prev->l->r;
else
prev->r=prev->r->r;
}
}
return;
}

void inorder(NODE *temp)
{
if(temp!=NULL)
{
inorder(temp->l);
printf("->%d ",temp->data);
inorder(temp->r);
}
}

void preorder(NODE *temp)
{
if(temp!=NULL)
{
printf("->%d ",temp->data);
preorder(temp->l);
preorder(temp->r);
}
}

void postorder(NODE *temp)
{
if(temp!=NULL)
{
postorder(temp->l);
postorder(temp->r);
printf("->%d ",temp->data);
}
}

25
COMPUTER PROGRAMMING LAB

/* SAMPLE OUTPUT
IMPLEMENTATION OF BINARY SEARCH TREE
1.Create 2.Insert 3.Delete 4.Inorder 5.Preorder 6.Postorer 7.Exit
Which Value U Want to Enter : 4
Do U Want To Cont...Press->1 / 0 : 1
Which Value U Want to Enter : 2
Do U Want To Cont...Press->1 / 0 : 1
Which Value U Want to Enter : 3
Do U Want To Cont...Press->1 / 0 : 0
1.Create 2.Insert 3.Delete 4.Inorder 5.Preorder 6.Postorer 7.Exit
Result Of Inorder Traversal Is :
->2 ->3 ->4
1.Create
2.Insert
3.Delete
4.Inorder
5.Preorder
6.Postorer
7.Exit
Which Value U Want to Enter : 6
1.Create
2.Insert
3.Delete
4.Inorder
5.Preorder
6.Postorer
7.Exit
Result Of Preorder Traversal Is :
->4 ->2 ->1 ->6
1.Create
2.Insert
3.Delete
4.Inorder
5.Preorder
6.Postorer
7.Exit

*/

26
COMPUTER PROGRAMMING LAB
Program-17(i):

Aim :IMPLEMENTATION OF SINGLE LINKED LIST

#include<stdio.h>
struct SLL
{
int data;
struct SLL *next;
};
typedef struct SLL NODE;
NODE *start,*end,*temp,*prev,*cur;
void create();
void display();
void del();
void del_beg();
void del_end();
void del_mid();
main()
{
int choice;
clrscr();
printf("IMPLEMENTATION OF SINGLE LINKED LIST \n");
while(1)
{
printf(" 1.CREATE\n 2.ADD\n 3.DELETE\n 4.DISPLAY\n 5.EXIT\n");
scanf("%d",&choice);
switch(choice)
{
case 1: create();
break;
break;
case 3:del();
break;
case 4:printf("List Elements Are :\n");
display();
break;
case 5:exit();
default: printf("Invalid Choice\n");
}
}
getch();
}

27
COMPUTER PROGRAMMING LAB
void create()
{
char choice;
int x;
start=NULL;
do
{
printf("Enter the data value: ");
scanf("%d",&x);
temp=malloc(sizeof(NODE));
temp->data=x;
temp->next=NULL;
if(start==NULL)
{
start=temp;
end=start;
}
else
{
end->next=temp; end=temp;
}
printf("Do U Want To Continue... press->'y':");
flushall();
choice=getchar();
}
while(choice=='y');
}
{
int x,ch;
printf("Enter the data value to be added : ");
scanf("%d",&x);
temp=malloc(sizeof(NODE));
temp->data=x;
temp->next=NULL;
printf("Postion of Elements :\n 1.Begining\n 2.Middle\n 3.End\n");
printf("In Which Location U Want To Enter The Element : ");
scanf("%d",&ch);
switch(ch)
{
break;
break;
break;
default: printf("Invalid Choice\n");
}
}

28
COMPUTER PROGRAMMING LAB

{
temp->next=start;
start=temp;
}

{
int i=1,pos;
printf("In Which position U Want To Enter : ");
scanf("%d",&pos);
prev=cur=start;
while(i<pos)
{
if(cur->next!=NULL)
{
prev=cur;
cur=cur->next;
}
if(cur==NULL)
break;
i++;
}
if(i!=pos)
{
printf("Invalid Position\n");
return;
}
prev->next=temp;
temp->next=cur;
}

{
for(end=start;end->next!=NULL;end=end->next);

end->next=temp;
}

void del()
{
int ch;
printf("Postion of Elements To Be Deleted:\n 1.Begining\n 2.Middle\n 3.End\n");
printf("From Which Location U Want To Delete The Element : ");
scanf("%d",&ch);

29
COMPUTER PROGRAMMING LAB
switch(ch)
{
case 1: del_beg();
break;
case 2: del_mid();
break;
case 3: del_end();
break;
default: printf("Invalid Choice\n");
}
}

void del_beg()
{
temp=start;
start=start->next;
temp->next=NULL;
free(temp);
}

void del_mid()
{
int i=1,pos;
printf("From Which position U Want To Delete : ");
scanf("%d",&pos);
prev=cur=start;
while(i<pos)
{
if(cur->next!=NULL)
{
prev=cur;
cur=cur->next;
}
if(cur==NULL)
break;
i++;
}
if(i!=pos)
{
printf("Invalid Position\n");
return;
}
prev->next=cur->next;
cur->next=NULL;
free(cur);
}

30
COMPUTER PROGRAMMING LAB
void del_end()
{
for(prev=end=start;end->next!=NULL;end=end->next)
prev=end;

prev->next=NULL;
free(end);
}

void display()
{
for(end=start;end!=NULL;end=end->next)
printf(" --> %d ",end->data);
printf("\n");
}

/* SAMPLE OUTPUT

1.CREATE
3.DELETE
4.DISPLAY
5.EXIT
Enter the data value: 5
Do U Want To Continue... press->'y':y
Enter the data value: 6
Do U Want To Continue... press->'y':y
Enter the data value: 7
Do U Want To Continue... press->'y':n
1.CREATE
3.DELETE
4.DISPLAY
5.EXIT
List Elements Are :
--> 5 --> 6 --> 7
1.CREATE
3.DELETE
4.DISPLAY
5.EXIT
*/

31
COMPUTER PROGRAMMING LAB
Program-17(ii):
Aim : IMPLEMENTATION OF DOUBLY LINKED LIST

#include<stdio.h>
struct DLL
{
struct DLL *left;
int data;
struct DLL *right;
};
typedef struct DLL NODE;
NODE *start,*end,*temp,*cur;
void create();
void display();
void del();
void del_beg();
void del_end();
void del_mid();
main()
{
int choice;
clrscr();
printf("IMPLEMENTATION OF DOUBLE LINKED LIST \n");
while(1)
{
printf(" 1.CREATE\n 2.ADD\n 3.DELETE\n 4.DISPLAY\n 5.EXIT\n");
scanf("%d",&choice);
switch(choice)
{
case 1: create();
break;
break;
case 3:del();
break;
case 4:printf("List Elements Are :\n");
display();
break;
case 5:exit();
default: printf("Invalid Choice\n");
}
}
getch();
}

32
COMPUTER PROGRAMMING LAB

void create()
{
char choice;
int x;
start=NULL;

do
{
printf("Enter the data value: ");
scanf("%d",&x);
temp=malloc(sizeof(NODE));
temp->left=NULL;
temp->data=x;
temp->right=NULL;
if(start==NULL)
{
start=temp;
end=start;
}
else
{
end->right=temp;
temp->left=end;
end=temp;
}
printf("Do U Want To Continue... press->'y':");
flushall();
choice=getchar();
}
while(choice=='y');
}

{
int x,ch;
printf("Enter the data value to be added : ");
scanf("%d",&x);
temp=malloc(sizeof(NODE));
temp->left=NULL;
temp->data=x;
temp->right=NULL;
printf("Postion of Elements :\n 1.Begining\n 2.Middle\n 3.End\n");
printf("In Which Location U Want To Enter The Element : ");
scanf("%d",&ch);

33
COMPUTER PROGRAMMING LAB
switch(ch)
{
break;
break;
break;
default: printf("Invalid Choice\n");
}
}
{
if(start==NULL)
start=temp;
else
{
temp->right=start;
start->left=temp;
start=temp;
}
}

{
int i=1,pos;
printf("In Which position U Want To Enter : ");
scanf("%d",&pos);
cur=start;
while(i<pos)
{
if(cur!=NULL)
{
cur=cur->right;
}
if(cur==NULL)
break;
i++;
}
if(i!=pos)
{
printf("Invalid Position\n");
return;
}
temp->left=cur->left;
temp->right=cur;
cur->left->right=temp;
cur->left=temp;
}

34
COMPUTER PROGRAMMING LAB

{
for(end=start;end->right!=NULL;end=end->right);
end->right=temp;
temp->left=end;
end=temp;
}

void del()
{
int ch;
printf("Postion of Elements To Be Deleted:\n 1.Begining\n 2.Middle\n 3.End\n");
printf("From Which Location U Want To Delete The Element : ");
scanf("%d",&ch);
switch(ch)
{
case 1: del_beg();
break;
case 2: del_mid();
break;
case 3: del_end();
break;
default: printf("Invalid Choice\n");
}
}

void del_beg()
{
temp=start;
start=start->right;
temp->left=temp->right=NULL;
free(temp);
}
void del_mid()
{
int i=1,pos;
printf("From Which position U Want To Delete : ");
scanf("%d",&pos);
cur=start;
while(i<pos)
{
if(cur!=NULL)
{
cur=cur->right;
}

35
COMPUTER PROGRAMMING LAB
if(cur==NULL)
break;
i++;
}
if(i!=pos)
{
printf("Invalid Position\n");
return;
}
temp=cur;
cur->left->right=cur->right;
cur->right->left=cur->left;
temp->left=temp->right=NULL;
free(temp);
}

void del_end()
{
for(end=start;end->right!=NULL;end=end->right);
temp=end;
end->left->right=NULL;
temp->left=temp->right=NULL;
end=end->left;
free(temp);
}

void display()
{
for(end=start;end!=NULL;end=end->right)
printf(" --> %d ",end->data);
printf("\n");
}

36
COMPUTER PROGRAMMING LAB
/* SAMPLE OUTPUT

1.CREATE
3.DELETE
4.DISPLAY
5.EXIT
Enter the data value: 1
Do U Want To Continue... press->'y':y
Enter the data value: 2
Do U Want To Continue... press->'y':n

1.CREATE
3.DELETE
4.DISPLAY
5.EXIT
List Elements Are :
--> 1 --> 2
1.CREATE
3.DELETE
4.DISPLAY
5.EXIT
Postion of Elements To Be Deleted:
1.Begining
2.Middle
3.End
From Which Location U Want To Delete The Element : 1
1.CREATE
3.DELETE
4.DISPLAY
5.EXIT
List Elements Are :
--> 2
1.CREATE
3.DELETE
4.DISPLAY
5.EXIT
*/

37
COMPUTER PROGRAMMING LAB

Program-18(i):

Aim :IMPLEMENTATION OF STACK USING SINGLE LINKED LIST

#include<stdio.h>
struct SLL
{
int data;
struct SLL *next;
};
typedef struct SLL NODE;
NODE *start=NULL,*top,*temp,*prev;
void push();
int pop();
int stacktop();
void display();
main()
{
int choice,x;
clrscr();
printf("IMPLEMENTATION OF STACK USING SINGLE LINKED LIST \n");
while(1)
{
printf(" 1.PUSH\n 2.POP\n 3.STACKTOP\n 4.DISPLAY\n 5.EXIT\n");
scanf("%d",&choice);
switch(choice)
{
case 1:
temp=malloc(sizeof(NODE));
printf("Which element U Want To Push into the stack: ");
scanf("%d",&temp->data);
temp->next=NULL;
push();
break;
case 2:
x=pop();
if(x!=0)
printf("Popped Element is : %d\n",x);
break;
case 3:
x=stacktop();
if(x!=0)
printf("Top Of The Stack Element is : %d\n",x);
break;

38
COMPUTER PROGRAMMING LAB

case 4: printf("List Of Stack Elements Are :\n");
display();
break;
case 5: exit(0);

default: printf("Invalid Choice\n");
}
}
getch();
}
void push()
{
if(top==NULL)
{
top=temp;
}
else
{
temp->next=top;
top=temp;
}
}
int pop()
{
int x;
if(top==NULL)
{
printf("Stack Is Empty\n");
return(0);
}
temp=top;
x=temp->data;
top=top->next;
temp->next=NULL;
free(temp);
return(x);
}
int stacktop()
{
int x;
if(top==NULL)
{
printf("Stack Is Empty\n");
return(0);
}
x=top->data;
return(x);
}

39
COMPUTER PROGRAMMING LAB

void display()
{
if(top==NULL)
{
printf("Stack Is Empty\n");
return;
}
for(temp=top;temp!=NULL;temp=temp->next)
printf(" %d <-- ",temp->data);
printf("\n");
}

/* SAMPLE OUTPUT

IMPLEMENTATION OF STACK USING SINGLE LINKED LIST
1.PUSH
2.POP
3.STACKTOP
4.DISPLAY
5.EXIT
Which element U Want To Push into the stack: 1
1.PUSH
2.POP
3.STACKTOP
4.DISPLAY
5.EXIT
Which element U Want To Push into the stack: 2
1.PUSH
2.POP
3.STACKTOP
4.DISPLAY
5.EXIT
List Of Stack Elements Are :
2 <-- 1 <--
1.PUSH
2.POP
3.STACKTOP
4.DISPLAY
5.EXIT
*/

40
COMPUTER PROGRAMMING LAB

Program-18(ii):

Aim :IMPLEMENTATION OF LINEAR QUEUE USING SINGLE LINKED LIST

#include<stdio.h>
struct SLL
{
int data;
struct SLL *next;
};
typedef struct SLL NODE;
NODE *rear=NULL,*front=NULL,*temp;

void insert();
int delete();
void display();

main()
{
int choice,x;
clrscr();
printf("IMPLEMENTATION OF LINEAR QUEUE USING SINGLE LINKED LIST \n");
while(1)
{
printf("\n1.INSERT\n2.DELETE\n3.DISPLAY\n4.EXIT\n");
scanf("%d",&choice);
switch(choice)
{
case 1: insert();
break;
case 2: x=delete();
if(x!=0)
printf("Element Deleted From The Queue Is : %d",x);
break;
case 3:
display();
break;
case 4:exit(0);

default: printf("Invalid Choice\n");
}
}
getch();
}

41
COMPUTER PROGRAMMING LAB
void insert()
{
int x;
temp=malloc(sizeof(NODE));
if(temp==NULL)
{
printf("Queue Is Overflow\n");
return;
}
printf("Enter the data value to be inserted into the Queue : ");
scanf("%d",&x);
temp->data=x;
temp->next=NULL;
if(front==NULL)
{
front=rear=temp;
}
else
{
rear->next=temp;
rear=temp;
}
}

int delete()
{
int x;

if(front==NULL)
{
printf("Queue is Underflow\n");
return(0);
}
temp=front;
x=temp->data;
front=front->next;
temp->next=NULL;
free(temp);

return(x);
}

42
COMPUTER PROGRAMMING LAB

void display()
{
if(front==NULL)
{
printf("Queue Is Empty\n");
}
else
{
printf("List of Queue Elements are: \n");
for(temp=front;temp!=NULL;temp=temp->next)
printf(" --> %d ",temp->data);
printf("\n");
}
}
/* SAMPLE OUTPUT
IMPLEMENTATION OF LINEAR QUEUE USING SINGLE LINKED LIST
1.INSERT
2.DELETE
3.DISPLAY
4.EXIT
Enter the data value to be inserted into the Queue : 1
1.INSERT
2.DELETE
3.DISPLAY
4.EXIT
Enter the data value to be inserted into the Queue : 2
1.INSERT
2.DELETE
3.DISPLAY
4.EXIT
Enter the data value to be inserted into the Queue : 3
1.INSERT
2.DELETE
3.DISPLAY
4.EXIT
List Of Queue Elements Are :
--> 1 --> 2 --> 3
1.INSERT
2.DELETE
3.DISPLAY
4.EXIT
Enter Your Choice : 4 */

43
COMPUTER PROGRAMMING LAB
Program-19 :

Aim:Implement the following sorting techniques.
i) Bubble sort ii) Insertion Sort iii) Quick Sort iv) Heap Sort.

Program-19(i):

Aim :Algorithm for Bubble Sort Technique

1.Start
2.Read ‘n’ elements to be sorted.
3.Sort the elements by using following bubble sort technique.
4.Compare the first element with second element if first element is greater than second
element then swap the two elements and then compare first with third element and
swap the elements if first element is greater than third element.
Repeat the process for ‘n’ elements.
5.Repeat step 4 ‘n-1’ times.
6.Now elements are will be in sorted order.
7.Stop.

Program-19(ii):

Aim :Algorithm for Insertion Sort Technique

1.Start
2.Read ‘n’ elements to be sorted.
3.Sort the elements by using following insertion sort technique.
4.Consider one element in the list and assume that the list is in sorted order.
5.Take 2nd element and Compare second element with all the elements in the list.
And insert an element in an appropriate place in the list.
6.Repeat step 5 for all elements.Then the list will be in the sorted order.
7..Stop.

44
COMPUTER PROGRAMMING LAB

Program-19(iii):

Aim :Algorithm for Quick Sort Technique

Algorithm for quick sort :

1.void quick_sort(int left,int right)
2.{
3.int l,r,pivot;
4. pivot=a[left];
5. l=left;
6. r=right;
7. while(left<right)
8. {
9. while((left<right) && (a[right]>=pivot))
10.     right--;
11. if(left!=right)
12. {
13. a[left]=a[right];
14. left++;
15.}
16. while((left<right) && (a[left]<=pivot))
17. left++;
18. if(left!=right)
19. {
20. a[right]=a[left];
21. right--;
22. }
23. }
24. a[left]=pivot;
25. pivot=left;
26. left=l;
27. right=r;
28. if(left<pivot)
29. quick_sort(left,pivot-1);
30. if(right>pivot)
31. quick_sort(pivot+1,right);
32.}

45
COMPUTER PROGRAMMING LAB

Program-20 :

Aim: Implement the following searching method.
i)Sequential Search ii) Binary Search

Program-20(i) :
Aim :Algorithm for Linear Search Technique.

1.Start
3.Read ‘key’ value to be searched.
4.Compare each element of the list with key element, if it is equal to any one of the
element then the Search is Successful and display the position of the key element;
otherwise Search is Unsuccessful.
5.Stop.

Program-20(ii) :

Aim :Algorithm for Binary Search Technique

1.Start
3.Read ‘key’ value to be searched.
4.Sort all the elements by using any one of the sorting technique.
5.Apply following binary search technique on the key element, if the element is found
then the Search is Successful and display the position of the key element; otherwise
Search is Unsuccessful.
5.Stop.

Algorithm for Binary Search :

1.int bin_search(int key)
2.{
3. int low,high,mid;
4. low=0;
5. high=n-1;
6.while(low<=high)
7. {
8. mid=(low+high)/2;
9. if(key==a[mid])
10.     return(mid);
11. else if(key<a[mid])
12.        high=mid-1;
13.      else
14.        low=mid+1;
15. }
16. return(-1);
17. }

46
COMPUTER PROGRAMMING LAB

Program-21 :

Aim : i) Conversion of Infix expression to Postfix notation.
ii) Simple expression evaluator, that can handle +,-,/ and *.

Program-21(i) :

Aim : Conversion of Infix expression to Postfix notation.

#include<stdio.h>
#include<ctype.h>
#define MAX 100
char stack[MAX];
int top=-1;
main()
{
char infix[MAX],postfix[MAX];
int ip,op;
clrscr();
ip=op=-1;
printf("Enter the infix expression:\n");
scanf("%s",infix);
stack[++top]='(';
while(infix[++ip]!='\0')
{
if(isalpha(infix[ip]))
postfix[++op]=infix[ip];
else if(isoperator(infix[ip]))
{
while(prec(infix[ip])<=prec(stack[top]) && !(infix[ip]=='^'&&stack[top]=='^'))
{
postfix[++op]=stack[top--];
}
stack[++top]=infix[ip];
}
else if(infix[ip]=='(')
stack[++top]='(';
else if(infix[ip]==')')
{
while(stack[top]!='(')
{
postfix[++op]=stack[top--];
}
top--;
}
}

47
COMPUTER PROGRAMMING LAB
while(top>0)
postfix[++op]=stack[top--];
postfix[++op]='\0';
printf("\n\n%s Equivalent Postfix Expression Is : %s\n",infix,postfix);
getch();
}

prec(char ch)
{
switch(ch)
{
case '^' : return(3);
case '*' :
case '/' :
case '%' : return(2);
case '+' :
case '-' : return(1);
case '(' : return(0);
}
}

isoperator(char ch)
{
switch(ch)
{
case '^' :
case '*' :
case '/' :
case '%' :
case '+' :
case '-' : return(1);
default : return(0);
}
}

/*

SAMPLE OUTPUT
Enter the infix expression:
((a+b*c)^(d-e))^(f/g)

((a+b*c)^(d-e))^(f/g) Equivalent Postfix Expression Is : abc*+de-^fg/^

*/

48
COMPUTER PROGRAMMING LAB

Program-21(ii):
Aim : Simple expression evaluator, that can handle +,-,/ and *..

#include<stdio.h>
#include<ctype.h>
#include<math.h>
int compute(char,int,int);
main()
{
char postfix[40];
int stack[40],top=-1;
int i=-1,op1,op2,value;
clrscr();
printf("Implementation Of Postfix Expression Evaluation \n\n");
printf("Enter The Valid Postfix Expression : ");
flushall();
gets(postfix);
while(postfix[++i]!='\0')
{
if(isdigit(postfix[i]))
stack[++top]=postfix[i]-'0';
else
{
op2=stack[top--];
op1=stack[top--];
value=compute(postfix[i],op1,op2);
stack[++top]=value;
}
}
printf("\n\nResult Of The Postfix Exp : %s Is : %d",postfix,stack[top]);
getch();
}
int compute(char ch,int a,int b)
{
switch(ch)
{
case '+' :return(a+b);
case '-' :return(a-b);
case '*' :return(a*b);
case '/' :return(a/b);
case '%' :return(a%b);
case '^' :return((int)pow(a,b));
}
}
/*SAMPLE OUTPUT
Implementation Of Postfix Expression Evaluation
Enter The Valid Postfix Expression : 23+4^
Result Of The Postfix Exp : 23+4^ Is : 625 */

49

```
To top