#include<stdio.h>
#include<stdlib.h>
struct node
{
float coef;
int expo;
struct node * next;
} ;
struct node * insert( struct node * start3, float coef, int expo) ;
struct node * add_polynomials( struct node * start1, struct node * start2, struct node * start3) ;
void display( struct node * start) ;
struct node * insert_s( struct node * start, float coef, int expo) ;
int main( )
{
int flag= 1 , expo;
float coef;
struct node * start1= NULL,* start2= NULL, * start3= NULL;
printf ( "enter polynomial 1\n " ) ; {
while ( 1 )
{
printf ( "enter 0 to stop and 1 to continue inserting\n " ) ; if ( flag== 0 )
break ;
printf ( "enter cofficient and exponent of polynomial\n " ) ; scanf ( "%f %d" ,& coef
,& expo
) ; start1= insert_s( start1, coef, expo) ;
}
flag= 1 ;
printf ( "enter polynomial 2\n " ) ; {
while ( 1 )
{
printf ( "enter 0 to stop and 1 to continue inserting\n " ) ; if ( flag== 0 )
break ;
printf ( "enter cofficient and exponent of polynomial\n " ) ; scanf ( "%f %d" ,& coef
,& expo
) ; start2= insert_s( start2, coef, expo) ;
}
printf ( "polynomials after addition\n " ) ; start3= add_polynomials( start1, start2, start3) ;
display( start3) ;
return 0 ;
}
struct node * insert_s( struct node * start, float coef, int expo)
{
struct node * p,* ptr;
ptr
= ( struct node
* ) malloc ( sizeof ( struct node
) ) ; if ( ptr== NULL)
{
printf ( "NO MEMORY AVAILABLE FOR INSERTION\n " ) ; }
ptr-> coef= coef;
ptr-> expo= expo;
ptr-> next= NULL;
if ( start== NULL|| expo> start-> expo)
{
ptr-> next= start;
start= ptr;
return start;
}
p= start;
while ( p-> next-> expo> expo&& p-> next != NULL)
p= p-> next;
ptr-> next= p-> next;
p-> next= ptr-> next;
return start;
}
struct node * add_polynomials( struct node * start1, struct node * start2, struct node * start3)
{
struct node * p1,* p2;
if ( start1== NULL&& start2== NULL)
{
printf ( "addition of two polynomial is zero polynomial\n " ) ; return start3;
}
if ( start1== NULL)
return start2;
if ( start2== NULL)
return start3;
p1= start1;
p2= start2;
while ( p1!= NULL&& p2!= NULL)
{
if ( p1-> expo== p2-> expo)
{
start3= insert( start3, p1-> coef+ p2-> coef, p1-> expo) ;
p1= p1-> next;
p2= p2-> next;
}
else if ( p1-> expo> p2-> expo)
{
start3= insert( start3, p1-> coef, p1-> expo) ;
p1= p1-> next;
}
else
{ start3= insert( start3, p2-> coef, p2-> expo) ;
p2= p2-> next;
}
}
while ( p1!= NULL)
{
start3= insert( start3, p1-> coef, p1-> expo) ;
p1= p1-> next;
}
while ( p2!= NULL)
{
start3= insert( start3, p2-> coef, p2-> expo) ;
p2= p2-> next;
}
}
struct node * insert( struct node * start3, float coef, int expo)
{
struct node * p,* ptr;
ptr
= ( struct node
* ) malloc ( sizeof ( struct node
) ) ; ptr-> coef= coef;
ptr-> expo= expo;
ptr-> next= NULL;
if ( start3== NULL)
{
start3= ptr;
return start3; }
p= start3;
while ( p-> next!= NULL)
p= p-> next;
p-> next= ptr;
return start3;
}
void display( struct node * start)
{
struct node * p;
if ( start== NULL)
{
return ;
}
p= start;
while ( p!= NULL)
{
printf ( "%fx^%d+" , p
-> coef
, p
-> expo
) ; p= p-> next;
}
}
I2luY2x1ZGU8c3RkaW8uaD4KI2luY2x1ZGU8c3RkbGliLmg+CnN0cnVjdCBub2RlCnsKZmxvYXQgY29lZjsKaW50IGV4cG87CnN0cnVjdCBub2RlICpuZXh0Owp9OwpzdHJ1Y3Qgbm9kZSAqaW5zZXJ0KHN0cnVjdCBub2RlICpzdGFydDMsZmxvYXQgY29lZixpbnQgZXhwbyk7CnN0cnVjdCBub2RlICphZGRfcG9seW5vbWlhbHMoc3RydWN0IG5vZGUgKnN0YXJ0MSxzdHJ1Y3Qgbm9kZSAqc3RhcnQyLHN0cnVjdCBub2RlICpzdGFydDMpOwp2b2lkIGRpc3BsYXkoc3RydWN0IG5vZGUgKnN0YXJ0KTsKc3RydWN0IG5vZGUgICppbnNlcnRfcyhzdHJ1Y3Qgbm9kZSAqc3RhcnQsZmxvYXQgY29lZixpbnQgZXhwbyk7CmludCBtYWluKCkKewppbnQgZmxhZz0xLGV4cG87CmZsb2F0IGNvZWY7CnN0cnVjdCBub2RlICpzdGFydDE9TlVMTCwqc3RhcnQyPU5VTEwsICpzdGFydDM9TlVMTDsKcHJpbnRmKCJlbnRlciBwb2x5bm9taWFsIDFcbiIpOwp7CndoaWxlKDEpCnsKcHJpbnRmKCJlbnRlciAwIHRvIHN0b3AgYW5kIDEgdG8gY29udGludWUgaW5zZXJ0aW5nXG4iKTsKc2NhbmYoIiVkIiwmZmxhZyk7CmlmKGZsYWc9PTApCmJyZWFrOwpwcmludGYoImVudGVyIGNvZmZpY2llbnQgYW5kIGV4cG9uZW50IG9mIHBvbHlub21pYWxcbiIpOwpzY2FuZigiJWYgJWQiLCZjb2VmLCZleHBvKTsKc3RhcnQxPSBpbnNlcnRfcyhzdGFydDEsY29lZixleHBvKTsKfQpmbGFnPTE7CnByaW50ZigiZW50ZXIgcG9seW5vbWlhbCAyXG4iKTsKewp3aGlsZSgxKQp7CnByaW50ZigiZW50ZXIgMCB0byBzdG9wIGFuZCAxIHRvIGNvbnRpbnVlIGluc2VydGluZ1xuIik7CnNjYW5mKCIlZCIsJmZsYWcpOwppZihmbGFnPT0wKQpicmVhazsKcHJpbnRmKCJlbnRlciBjb2ZmaWNpZW50IGFuZCBleHBvbmVudCBvZiBwb2x5bm9taWFsXG4iKTsKc2NhbmYoIiVmICVkIiwmY29lZiwmZXhwbyk7CnN0YXJ0Mj0gaW5zZXJ0X3Moc3RhcnQyLGNvZWYsZXhwbyk7Cn0KcHJpbnRmKCJwb2x5bm9taWFscyBhZnRlciBhZGRpdGlvblxuIik7CnN0YXJ0Mz1hZGRfcG9seW5vbWlhbHMoc3RhcnQxLHN0YXJ0MixzdGFydDMpOwpkaXNwbGF5KHN0YXJ0Myk7CnJldHVybiAwOwp9CnN0cnVjdCBub2RlICppbnNlcnRfcyhzdHJ1Y3Qgbm9kZSAqc3RhcnQsZmxvYXQgY29lZixpbnQgZXhwbykKewpzdHJ1Y3Qgbm9kZSAqcCwqcHRyOwpwdHI9KHN0cnVjdCBub2RlICopbWFsbG9jKHNpemVvZihzdHJ1Y3Qgbm9kZSkpOwppZihwdHI9PU5VTEwpCnsKcHJpbnRmKCJOTyBNRU1PUlkgQVZBSUxBQkxFIEZPUiBJTlNFUlRJT05cbiIpOwpleGl0KDEpOwp9CnB0ci0+Y29lZj1jb2VmOwpwdHItPmV4cG89ZXhwbzsKcHRyLT5uZXh0PU5VTEw7CmlmKHN0YXJ0PT1OVUxMfHxleHBvPnN0YXJ0LT5leHBvKQp7CnB0ci0+bmV4dD1zdGFydDsKc3RhcnQ9cHRyOwpyZXR1cm4gc3RhcnQ7Cn0KcD1zdGFydDsKd2hpbGUocC0+bmV4dC0+ZXhwbz5leHBvJiZwLT5uZXh0ICE9TlVMTCkKcD1wLT5uZXh0OwpwdHItPm5leHQ9cC0+bmV4dDsKcC0+bmV4dD1wdHItPm5leHQ7CnJldHVybiBzdGFydDsKfQpzdHJ1Y3Qgbm9kZSAqYWRkX3BvbHlub21pYWxzKHN0cnVjdCBub2RlICpzdGFydDEsc3RydWN0IG5vZGUgKnN0YXJ0MixzdHJ1Y3Qgbm9kZSAqc3RhcnQzKQp7CnN0cnVjdCBub2RlICpwMSwqcDI7CmlmKHN0YXJ0MT09TlVMTCYmc3RhcnQyPT1OVUxMKQp7CnByaW50ZigiYWRkaXRpb24gb2YgdHdvIHBvbHlub21pYWwgaXMgemVybyBwb2x5bm9taWFsXG4iKTsKcmV0dXJuIHN0YXJ0MzsKfQppZihzdGFydDE9PU5VTEwpCnJldHVybiBzdGFydDI7CmlmKHN0YXJ0Mj09TlVMTCkKcmV0dXJuIHN0YXJ0MzsKcDE9c3RhcnQxOwpwMj1zdGFydDI7CndoaWxlKHAxIT1OVUxMJiZwMiE9TlVMTCkKewppZihwMS0+ZXhwbz09cDItPmV4cG8pCnsKc3RhcnQzPWluc2VydChzdGFydDMscDEtPmNvZWYrcDItPmNvZWYscDEtPmV4cG8pOwpwMT1wMS0+bmV4dDsKcDI9cDItPm5leHQ7Cn0KZWxzZSBpZihwMS0+ZXhwbz5wMi0+ZXhwbykKewpzdGFydDM9aW5zZXJ0KHN0YXJ0MyxwMS0+Y29lZixwMS0+ZXhwbyk7CnAxPXAxLT5uZXh0Owp9CmVsc2UKe3N0YXJ0Mz1pbnNlcnQoc3RhcnQzLHAyLT5jb2VmLHAyLT5leHBvKTsKcDI9cDItPm5leHQ7Cn0KfQp3aGlsZShwMSE9TlVMTCkKewpzdGFydDM9aW5zZXJ0KHN0YXJ0MyxwMS0+Y29lZixwMS0+ZXhwbyk7CnAxPXAxLT5uZXh0Owp9CndoaWxlKHAyIT1OVUxMKQp7CnN0YXJ0Mz1pbnNlcnQoc3RhcnQzLHAyLT5jb2VmLHAyLT5leHBvKTsKcDI9cDItPm5leHQ7Cn0KfQoKc3RydWN0IG5vZGUgKmluc2VydChzdHJ1Y3Qgbm9kZSAqc3RhcnQzLGZsb2F0IGNvZWYsaW50IGV4cG8pCnsKc3RydWN0IG5vZGUgKnAsKnB0cjsKcHRyPShzdHJ1Y3Qgbm9kZSAqKW1hbGxvYyhzaXplb2Yoc3RydWN0IG5vZGUpKTsKcHRyLT5jb2VmPWNvZWY7CnB0ci0+ZXhwbz1leHBvOwpwdHItPm5leHQ9TlVMTDsKaWYoc3RhcnQzPT1OVUxMKQp7CnN0YXJ0Mz1wdHI7CnJldHVybiBzdGFydDM7fQpwPXN0YXJ0MzsKd2hpbGUocC0+bmV4dCE9TlVMTCkKcD1wLT5uZXh0OwpwLT5uZXh0PXB0cjsKcmV0dXJuIHN0YXJ0MzsKfQp2b2lkIGRpc3BsYXkoc3RydWN0IG5vZGUgKnN0YXJ0KQp7CnN0cnVjdCBub2RlICpwOwppZihzdGFydD09TlVMTCkKewpwcmludGYoInplcm8gcG9seW5vbWlhbFxuIik7CnJldHVybiA7Cn0KcD1zdGFydDsKd2hpbGUocCE9TlVMTCkKewpwcmludGYoIiVmeF4lZCsiLHAtPmNvZWYscC0+ZXhwbyk7CnA9cC0+bmV4dDsKfQoKfQ==