Advertisement
6_2008-2009 Data Structures #215748

multiply two polynomials using link lists

use of link list in multiplying two polynomials of any order

AI

AI Summary: This codebase represents a historical implementation of the logic described in the metadata. Our preservation engine analyzes the structure to provide context for modern developers.

Source Code
original-source
#include<iostream.h>
#include<conio.h>
#include<process.h>
#include<stdio.h>
class link
{
 public:
 int coff,order;
 link *next;
 void getd(int a)
 {
 cout<<"enter the coff:";
 cin>>coff;
 order=a;
 next=NULL;
 }
 void showd()
 {
 cout<<coff<<"*"<<"X^"<<order;
 }
 };  //end of class

 link *start1=NULL,*start2=NULL,*start3=NULL,*ptr,*ptr1,*newptr;

 void enter(int or1 ,int or2)
 {
 int i;
  for(i=or1;i>=0;i--)             //entry for poly1
  {
  cout<<"enter coff for X^"<<i<<":";
  newptr=new link;
   newptr->getd(i);
   if(start1==NULL)
   start1=newptr;
   else
   {
    ptr=start1;
    while(ptr->next!=NULL)
	 ptr=ptr->next;
	ptr->next=newptr;
   }
  }
 for( i=or2;i>=0;i--)      //entry for poly2
  {
  cout<<"enter coff for X^"<<i<<":";
  newptr=new link;
   newptr->getd(i);
   if(start2==NULL)
   start2=newptr;
   else
   {
    ptr=start2;
    while(ptr->next!=NULL)
	 ptr=ptr->next;
	ptr->next=newptr;
   }
  }
 }
 void mult()
 {
  int order,coff;
  link *ptr3;
  if(start1==NULL)
  {
  cout<<"multiplication not possible";
  exit(0);
  }
  ptr=start1;
  while(ptr!=NULL)    //traversing list 1
  {
  if(start2!=NULL)
  {
   ptr1=start2;
   while(ptr1!=NULL)   //traversing list 2
   {
	newptr=new link;
	newptr->coff=ptr->coff*ptr1->coff;
	newptr->order=ptr->order+ptr1->order;
	 newptr->next=NULL;
	 if(start3==NULL)
	 start3=newptr;
	else
	 {
	 ptr3=start3;
	 while(ptr3->next!=NULL)
	  ptr3=ptr3->next;
	 ptr3->next=newptr;
	 }
   ptr1=ptr1->next;
   }              //traversing list 2 complete
  }
  ptr=ptr->next;
 }         //traversing list 1 complete
  ptr=start3;         //combining similar order terms
  while(ptr->next!=NULL)
  { ptr1=ptr;
   while(ptr1->next!=NULL)
   {
    ptr3=ptr1;
	ptr1=ptr1->next;
    if(ptr->order==ptr1->order)
	{
	ptr->coff=ptr->coff + ptr1->coff;
    ptr3->next=ptr1->next;
    delete ptr1;
    ptr1=ptr3;
    }
   }
   ptr=ptr->next;
  }
 }

 void showall()        //output of polynomials
 {
  ptr=start1;
  cout<<endl<<endl;
  while(ptr!=NULL)
  {
  ptr->showd();
  ptr=ptr->next;
  if(ptr!=NULL) cout<<" + ";
 }
 ptr=start2;
  cout<<endl<<endl;
  while(ptr!=NULL)
  {
  ptr->showd();
  ptr=ptr->next;
  if(ptr!=NULL) cout<<" + ";
 }
  ptr=start3;
  cout<<endl<<endl;
  while(ptr!=NULL)
  {
  ptr->showd();
  ptr=ptr->next;
  if(ptr!=NULL) cout<<" + ";
 }
 }
 //link *start1=NULL,*start2=NULL,*ptr,*newptr; //all are pointing at null
 void main()
 {
 int o1,o2;
 clrscr();
 cout<<"enter the order of polynomial 1:";
 cin>>o1;
 cout<<"\nenter the order of polynomial 2:";
 cin>>o2;
 enter(o1,o2);
 mult();
 showall();
 getch();
 }
Original Comments (3)
Recovered from Wayback Machine