Your Federal Quarterly Tax Payments are due April 15th Get Help Now >>

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

VIEWS: 12 PAGES: 49

									                         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
  2.Read a ,x and b
  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
  2.Read x and y
  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
  2.Read x,m and s
  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
    2.Read a,b and c
    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
    2.Read n
    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
    2.Read x
    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
 2.Read x
 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
 2.Read x
 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

Input : Read 20 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
   5. Read n;
   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.

1. Addition Procedure

add( )
{
  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.
3.Read the Purchase Amount
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
2.Read ‘m’
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");
   printf("Enter Your Choice : ");
   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)
{
   printf("%d Element Not Found In a Binary Search Tree\n",x);
   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
Enter Your Choice : 1
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
Enter Your Choice :4
Result Of Inorder Traversal Is :
->2 ->3 ->4
1.Create
2.Insert
3.Delete
4.Inorder
5.Preorder
6.Postorer
7.Exit
Enter Your Choice : 2
Which Value U Want to Enter : 6
1.Create
2.Insert
3.Delete
4.Inorder
5.Preorder
6.Postorer
7.Exit
Enter Your Choice : 5
Result Of Preorder Traversal Is :
->4 ->2 ->1 ->6
1.Create
2.Insert
3.Delete
4.Inorder
5.Preorder
6.Postorer
7.Exit
Enter Your Choice : 7

*/




                                       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 add();
void add_beg();
void add_end();
void add_mid();
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");
  printf("Enter Your Choice : ");
  scanf("%d",&choice);
  switch(choice)
  {
   case 1: create();
            break;
   case 2:add();
           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');
}
void add()
{
  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)
  {
   case 1: add_beg();
            break;
   case 2: add_mid();
            break;
   case 3: add_end();
            break;
   default: printf("Invalid Choice\n");
  }
}

                                           28
                         COMPUTER PROGRAMMING LAB

void add_beg()
{
    temp->next=start;
   start=temp;
 }


void add_mid()
{
  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;
}


void add_end()
{
 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

IMPLEMENTATION OF SINGLE LINKED LIST

 1.CREATE
 2.ADD
 3.DELETE
 4.DISPLAY
 5.EXIT
 Enter Your Choice : 1
 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
 2.ADD
 3.DELETE
 4.DISPLAY
 5.EXIT
 Enter Your Choice : 4
 List Elements Are :
  --> 5 --> 6 --> 7
 1.CREATE
 2.ADD
 3.DELETE
 4.DISPLAY
 5.EXIT
 Enter Your Choice : 5
*/


                                         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 add();
void add_beg();
void add_end();
void add_mid();
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");
  printf("Enter Your Choice : ");
  scanf("%d",&choice);
  switch(choice)
  {
   case 1: create();
            break;
   case 2:add();
           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');
}

void add()
{
  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)
 {
  case 1: add_beg();
          break;
  case 2: add_mid();
          break;
  case 3: add_end();
          break;
  default: printf("Invalid Choice\n");
 }
}
void add_beg()
{
 if(start==NULL)
   start=temp;
 else
 {
   temp->right=start;
   start->left=temp;
   start=temp;
 }
}

void add_mid()
{
  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


void add_end()
{
 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

IMPLEMENTATION OF DOUBLE LINKED LIST
 1.CREATE
 2.ADD
 3.DELETE
 4.DISPLAY
 5.EXIT
 Enter Your Choice : 1
 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
 2.ADD
 3.DELETE
 4.DISPLAY
 5.EXIT
 Enter Your Choice : 4
 List Elements Are :
 --> 1 --> 2
 1.CREATE
 2.ADD
 3.DELETE
 4.DISPLAY
 5.EXIT
 Enter Your Choice :3
 Postion of Elements To Be Deleted:
 1.Begining
 2.Middle
 3.End
 From Which Location U Want To Delete The Element : 1
 1.CREATE
 2.ADD
 3.DELETE
 4.DISPLAY
 5.EXIT
 Enter Your Choice : 4
 List Elements Are :
 --> 2
 1.CREATE
 2.ADD
 3.DELETE
 4.DISPLAY
 5.EXIT
 Enter Your Choice : 5
*/


                                       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");
  printf("Enter Your Choice : ");
  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
 Enter Your Choice : 1
 Which element U Want To Push into the stack: 1
 1.PUSH
 2.POP
 3.STACKTOP
 4.DISPLAY
 5.EXIT
 Enter Your Choice : 1
 Which element U Want To Push into the stack: 2
 1.PUSH
 2.POP
 3.STACKTOP
 4.DISPLAY
 5.EXIT
 Enter Your Choice :4
 List Of Stack Elements Are :
 2 <-- 1 <--
 1.PUSH
 2.POP
 3.STACKTOP
 4.DISPLAY
 5.EXIT
 Enter Your Choice : 5
*/




                                     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");
  printf("Enter Your Choice : ");
  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 Your Choice : 1
Enter the data value to be inserted into the Queue : 1
1.INSERT
2.DELETE
3.DISPLAY
4.EXIT
Enter Your Choice : 1
Enter the data value to be inserted into the Queue : 2
1.INSERT
2.DELETE
3.DISPLAY
4.EXIT
Enter Your Choice : 1
Enter the data value to be inserted into the Queue : 3
1.INSERT
2.DELETE
3.DISPLAY
4.EXIT
Enter Your Choice : 3
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
2.Read ‘n’ elements.
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
2.Read ‘n’ elements.
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