用鍊錶實現一元多項式的加 減 乘 求導運算

2021-07-29 18:13:42 字數 2602 閱讀 8185

在資料結構線性表的鍊錶學習中有乙個很有趣的題目:計算兩個多項式的加、減、乘和多項式的導數。

題目不難,將多項式的係數和指數存進鍊錶,然後進行相應操作即可。

一、加法:

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...