BABU MCA WELCOMESYOU - C++ Programs
 /* Polynomials like  2x^3 + 7x^2 + 10x -8 can be maintined using a linked list*/ /* program to add two polynomials maintained as linked lists */        #include        #include        #include      /* structure representing a node of a linked list and also a term of a     polynomial */       struct polynode     {        float coeff;        int exp;        struct polynode *link;     };     typedef struct polynode *NODEPTR;      void poly_append(NODEPTR*,float,int);      void poly_addition(NODEPTR,NODEPTR,NODEPTR*);      void display(NODEPTR);     main()       {          NODEPTR first,second,total;          int i=0;          clrscr();          first = second = total = NULL; /* empty linked lists */          poly_append(&first,1.4,5);          poly_append(&first,1.5,4);          poly_append(&first,1.7,2);          poly_append(&first,1.8,1);          poly_append(&first,1.9,0);           display(first);          poly_append(&second,1.5,6);          poly_append(&second,2.5,5);          poly_append(&second,-3.5,4);          poly_append(&second,4.5,3);          poly_append(&second,6.5,1);          printf("nn");           display(second);           /* draws a dashed horizontal line */           printf("n");           while(i++<79)           printf("-");           printf("nn");            poly_addition(first,second,&total);            display(total); /* displays the resultant polynomial */       }       void poly_append(NODEPTR *q,float coeff,int expo)     {         NODEPTR temp;         temp = *q;         /* creates a new node if the list is empty */           if(*q == NULL)            {          *q = (NODEPTR)malloc(sizeof(struct polynode));          temp = *q;            }            else            {           /* traverse the entire linked list */           while(temp->link !=NULL)            temp = temp -> link;            /* creates new nodes at intermediate stages */            temp -> link = (NODEPTR) malloc(sizeof(struct polynode));            temp = temp ->link;         }           /* assigning coefficient and exponent */           temp -> coeff = coeff;           temp -> exp = expo;           temp -> link = NULL;        }     void  display(NODEPTR q)        {           /* Traverse till the end of the linked list */          while(q!=NULL)          {             printf("%.1fx^%d+",q->coeff,q->exp);             q = q->link;          }          printf("b "); /* erases the last colon */         }        /* adds two polynomials */        void poly_addition(NODEPTR f, NODEPTR s,NODEPTR *t)       {         NODEPTR z;         /* if both linked lists are empty */          if(f == NULL && s == NULL)            return;          /* traverse till one of the list ends */         while(f != NULL && s != NULL)          {             /* creates a new node if the list is empty */                if(*t == NULL)             {                *t = (NODEPTR) malloc(sizeof(struct polynode));                z = *t;              }              /* creates new nodes at intermediate stages */              else             {                 z -> link = (NODEPTR) malloc(sizeof(struct polynode));                 z = z -> link;              }             /* stores a term of the larger degree polynomial */               if( f -> exp < s ->exp)             {                z -> coeff = s -> coeff;                z -> exp = s->exp;                s = s -> link;              }               else              {                  if(f -> exp > s ->exp)                    {                  z -> coeff = f ->coeff;                  z -> exp = s -> exp;                  f = f -> link;                 }                   else                   {                  /* add the coefficients, when exponents are equal */                  if(f -> exp == s ->exp)                  {                      /* assigning the added coefficient*/                      z->coeff = f->coeff + s->coeff;                      z->exp = f->exp;                      f = f->link;                      s = s->link;                   }                    }              }          }         /* assigning the remaining items of the first polynomial to the result */         while(f != NULL)         {            if(*t == NULL)            {             *t = (NODEPTR) malloc(sizeof(struct polynode));               z = *t;            }            else            {              z -> link = (NODEPTR) malloc(sizeof(struct polynode));              z = z-> link;             }           /* assigning coefficient and exponent */             z->coeff = f->coeff;             z->exp = f->exp;             f = f->link;         }            /* assigning the remaining items of the second polynomial to the result */         while(s != NULL)         {            if(*t == NULL)            {             *t = (NODEPTR) malloc(sizeof(struct polynode));               z = *t;            }            else            {              z -> link = (NODEPTR) malloc(sizeof(struct polynode));              z = z-> link;             }           /* assigning coefficient and exponent */             z->coeff = s->coeff;             z->exp = s->exp;             s = s->link;         }          z ->link = NULL;          }                                 /*pascal*/            #include            #include            main()         {         static int a;          int i,j,n;          clrscr();          printf("n Enter n : ");          scanf("%d",&n);          a = 1;         for(i=1;i<=n;i++)          {          for(j=n;j>=i;j--)          printf("  ");           for(j=1;j<=i;j++)            {                        /* Pascal triangle elements are given by                a[i][j] = a[i-1][j-1] + a[i-1][j]    */               a[i][j] = a[i-1][j-1] + a[i-1][j];                        printf("%5d",a[i][j]);             }               printf("n");          }     }         /* Quick Sort or Partition Exchange Sort */     #include     #include     #define MAX 10      void  quick(int [],int,int);      void partition(int x[],int,int,int*);       void quick(int x[],int lb,int ub)         {           int j;           if(lb>=ub)         return; /* array is sorted */           partition(x,lb,ub,&j);            /* recursively sort the subarray between positions            lb and j-1 */            quick(x,lb,j-1);            /* recursively sort the subarray between positions            j+1 and ub */            quick(x,j+1,ub);          }         void partition(int x[],int lb,int ub,int *pj)          {            int a,down,temp,up;         a = x[lb]; /* a is the element whose final                   position is sought   */         up = ub;         down = lb;           while(downa)                up--; /* move down the array */             if(down              #include              #include              #define MAX 10              void radixsort(int [],int);              main()              {                int a[MAX],n,i;                clrscr();                printf("n Enter num of elements : ");                scanf("%d",&n);                printf("n Enter elements : n");                for(i=0;i           #include          void towers(int,char,char,char);            main()            {               int n;               clrscr();               printf("n Enter num of disks : ");               scanf("%d",&n);               towers(n,'A','C','B');            }          void towers(int n,char frompeg,char topeg,char auxpeg)           {         /* If only one disk, make the move and stop */           if(n == 1)           {             printf("nmove disk 1 from peg %c to peg %c",frompeg,topeg);             return;           }          /* Move top n-1 disks from A to B, using C as auxiliary */            towers(n-1,frompeg,auxpeg,topeg);           /*  move remaining disk from A to C */            printf("nmove disk %d from peg %c to peg %c",n,frompeg,topeg);          /* Move n-1 disk from B to C using A as auxiliary */            towers(n-1,auxpeg,topeg,frompeg);           }                                         /* pascal */         #include         #include           main()          {            long int fact(int);            int i,j,k,m,n;            clrscr();            printf("n Enter number of lines : ");            scanf("%d",&n);            for(i=0;i        #include        #define MAX 20         int delheap(int [],int);         void insheap(int tree[],int n,int item);        void insheap(int tree[],int n,int item)          {            int ptr,par;         ptr = n;            /* find location to insert item */            while(ptr>1)            {          par = ptr/2; /* location of parent node */           if(item <= tree[par])               {             tree[ptr] = item;              return;               }             tree[ptr] = tree[par];             ptr = par;            }          tree =  item;          }      int delheap(int tree[],int n)       {          int item,last,ptr,left,right;          item = tree; /* remove root of tree */          last = tree[n];           ptr =  1,left = 2,right = 3;         while(right <= n)         {            if(last >= tree[left] && last >= tree[right])            {             tree[ptr] = last;              return item;            }            if(tree[right] <= tree[left])            {               tree[ptr] = tree[left];               ptr = left;            }            else            {               tree[ptr] = tree[right];               ptr = right;            }            left = 2 * ptr;            right = left + 1;            }            if(left == n && last < tree[left])          ptr = left;            tree[ptr] = last;            return(item);        }        main()         {          int a[MAX],i,j,n,u;          printf("n Enter Limit : ");          scanf("%d",&n);          u = n;          printf("n Enter ele :: ");          for(i=1;i<=n;i++)          scanf("%d",&a[i]);          printf("n Before Sorting Elements are : ");           for(i=1;i<=n;i++)           printf("%10d",a[i]);          for(j=1;j<=n;j++)          insheap(a,j,a[j]);           while(u>1)            {          a[u] = delheap(a,u);          u--;            }           printf("n After Sorting Elements are : ");           for(i=1;i<=n;i++)           printf("%10d",a[i]);       }                                            /* Merge Sort */      #include      #include      #define MAX 10          void mergesort(int [],int);          main()           {              int x[MAX],i,n;              clrscr();              printf("n Enter num of elements : ");              scanf("%d",&n);              printf("n Enter elements : ");              for(i=0;i     #include /*     main()          {            int num,fibo=0,f1=1,f2,i;            clrscr();            printf("n How Many Fibo Numbers Do U Want : ");            scanf("%d",&num);           printf("n%d Fibo series  are : n",num);           for(i=1;i<=num;i++)              {             printf(" %d ",fibo);              f2 = fibo + f1;              fibo = f1;              f1 = f2;                }           }  */     /* program to generate fibonacci numbers with in a limit */ /*          main()          {            int num,fibo=0,f1=1,f2;            clrscr();            printf("n Enter a number : ");            scanf("%d",&num);           printf("n Fibo series with in %d  are : n",num);           while(fibo <= num)              {             printf(" %d ",fibo);              f2 = fibo + f1;              fibo = f1;              f1 = f2;                }           } */             /* program to find nth number in the fibo series using recursion */            #include            #include          int fibo(int n)            {              int f1,f2;              if(n<=1)              return(n);              f1= fibo(n-1);              f2 = fibo(n-2);              return(f1+f2);            /*  return(fibo(n-1) + fibo(n-2)); */            }            main()             {               int num,fib;               clrscr();               printf("n Enter a number : ");               scanf("%d",&num);               fib = fibo(num-1);               printf("n element %d in fibo series is  %d",num,fib);             }  Today, there have been 1 visitors (5 hits) on this page!