在資料結構線性表的鍊錶學習中有乙個很有趣的題目:計算兩個多項式的加、減、乘和多項式的導數。
題目不難,將多項式的係數和指數存進鍊錶,然後進行相應操作即可。
一、加法:
1、判斷指數是否相等,若相等則將係數相加,相加後不為零就開闢新空間,將新的係數存入結點,尾插進新煉表中。
2、如果表示式1的指數小於表示式2的指數,就將表示式1的該結點資料複製進新結點中,並將新結點尾插進新鍊錶。
3、如果表示式2的指數小於表示式1的指數,就將表示式2的該結點資料複製進新結點中,並將新結點尾插進新鍊錶。
4、返回新鍊錶的頭指標。
二、減法:
1、將被減鍊錶的每一項的係數都乘以-1,執行兩個表示式相加操作。
2、將被減鍊錶復原。
三、乘法:
將鍊錶1的每一項乘以鍊錶2的每一項,然後將它們相加。
四、導數:
將鍊錶的指數和係數相乘,再將指數減一。
#include #include //poly資料型別
typedef struct polypoly;
//初始化表示式
poly *initpoly(void)
//釋放鍊錶
void freelist(poly *phead)
phead->pnext = null;
}
//銷毀鍊錶
void deslist(poly *phead)
//輸入表示式
void inputpoly(poly *phead)
else
} ptail->pnext = null;
}
//輸出表示式
void outputpoly(poly *phead)
printf("%dx^%d", ptemp->coef, ptemp->expn);
ptemp = ptemp->pnext;
while(ptemp != null)
printf("\n");
}
//表示式相加
poly *addpoly(poly *phead1, poly *phead2)
if ((pnew = (poly *)malloc(sizeof(poly))) == null)
exit(-1);
pnew->coef = temp;
pnew->expn = ptemp1->expn;
ptail->pnext = pnew;
pnew->pnext = null;
ptail = pnew;
ptemp1 = ptemp1->pnext;
ptemp2 = ptemp2->pnext;
}//如果表示式1指數小於2
else if(ptemp1->expn < ptemp2->expn)//如果表示式1指數大於2
else
} //將剩餘的未掃瞄項放入結果鍊錶中
while(ptemp1 != null)
while(ptemp2 != null)
return phead3;
}
//兩個多項式減法
poly *subpoly(poly *phead1, poly *phead2)
phead3 = addpoly(phead1, phead2);
//將被減表示式值復原
ptemp = phead2->pnext;
while(ptemp != null)
return phead3;
}
//兩個多項式相乘
poly *multpoly(poly *phead1, poly *phead2)
presult = addpoly(pmult1, pmult2);
freelist(pmult2);
pmult2->pnext = presult->pnext;
ptemp1 = ptemp1->pnext;
} deslist(pmult1);
free(pmult2);
return presult;
}
//多項式求導
poly *derpoly(poly *phead)
if ((pnew = (poly *)malloc(sizeof(poly))) == null)
exit(-1);
pnew->coef = ptemp->coef * ptemp->expn;
pnew->expn = ptemp->expn - 1;
ptail->pnext = pnew;
pnew->pnext = null;
ptail = pnew;
ptemp = ptemp->pnext;
} return phead1;
}
int main(void)
用鍊錶實現一元多項式的加 減 乘 求導運算
在資料結構線性表的鍊錶學習中有乙個很有趣的題目 計算兩個多項式的加 減 乘和多項式的導數。題目不難,將多項式的係數和指數存進鍊錶,然後進行相應操作即可。一 加法 判斷指數是否相等,若相等則將係數相加,相加後不為零就開闢新空間,將新的係數存入結點,尾插進新煉表中。如果表示式 的指數小於表示式 的指數,...
一元多項式的加減 c語言鍊錶實現
1.題目 實現一元多項式的加減法運算,要求多項式採用鍊錶儲存結構。2.測試用例 1 a x 3x 1000 7x 3 2x 1 b x x 99 x 3 2x 8 加法運算結果 c x 9.00 6.00x 3 1.00x 99 3.00x 1000 減法運算結果 d x 7.00 4.00x 8....
用鍊錶實現的一元多項式演算法
include include include stdio.h typedef struct polynomial typedef struct lnode lnode,link void createlink link l,int n void printlist link l void addp...