鍊錶的應用 單元多項式的加法 減法 乘法

2021-09-07 05:02:40 字數 2484 閱讀 3862

使用鍊錶來實現單元多項式的加法、減法、乘法。乙個單元多項式的節點結構無非是這種:係數域、指數域、鏈域。

例如以下圖:

我們使用鍊錶來模擬單元多項式的常見運算。

當中,加法是其他運算的基礎。減法:poly1-poly2=poly1+(-poly2),乘法:poly1*poly2。可用poly1乘以poly2的每一項,相加其乘積結果。

單元多項式的節點結構型別是這種:

typedef struct node

polynode; //多項式節點 polynomial node

多項式的加法我們提供了兩種:

1.polynomial polyadd(polynomial poly1, polynomial poly2),把poly1和poly2相加得到乙個新的多項式。相加的過程中poly1和poly2保持不變,不會被破壞。

2.void add(polynomial poly1, polynomial poly2),把poly2加到poly1上。相加的過程中poly2的節點會被利用上。結束後。poly2不存在了。

提供第一種加法,是為了保持poly1和poly2不變,以便進行下一次的運算。提供另外一種加法,是為了運算結束後,記憶體不會洩露。

其他詳細細節得看**了:

#include#includetypedef struct node

polynode; //多項式節點 polynomial node

typedef polynode* polynomial;

polynomial createpolynomial() //建立多項式

}else

}else

}else

}return head;

}//多項式與指定單項式相乘,該單項式為 coefx^expn

polynomial multiply(polynomial poly, float coef, int expn)

p->next = null;

return poly;

}void add(polynomial poly1, polynomial poly2) //把 poly2 加到 poly1 上

else if (p->expn < q->expn)

else

else

t = q;

q = q->next;

free(t);

} }if (p)

r->next = p;

if (q)

r->next = q;

}//多項式減法 poly1-poly2形成乙個新的多項式

polynomial polysubtract(polynomial poly1, polynomial poly2)

p->next = null;

add(poly, poly1); //利用加法

return poly;

}//多項式相加 poly1+poly2形成乙個新的多項式

polynomial polyadd(polynomial poly1, polynomial poly2)

else if (p->expn < q->expn)

else

q = q->next;

p = p->next;

} }while (p)

while (q)

r->next = null;

return poly;

}polynomial polymultiply(polynomial poly1, polynomial poly2) //多項式相乘

return poly;

}void printpoly(polynomial poly) //列印多項式

if (p->expn == 0)

printf("%g", p->coef); //列印常數項

else

printf("%gx^%d", p->coef, p->expn);

printf("\n"); }}

void clear(polynomial poly) //釋放記憶體

} poly = null;

}

呼叫方法:

int main()

呼叫中,呼叫次序是加法、乘法、減法,減法放最後。

這是由於減法的過程中poly2會被破壞掉。細緻看看add()方法就可明確。

執行:

**比較長。邏輯有些複雜。得重複地看。

若是有所幫助,頂乙個哦!

專欄完整資料夾:

鍊錶的多項式加法鍊錶的多項式加法

老師給的模板看的我不要不要的,真心難看,看了很久才把過載加法搞定了。include using namespace std include 定義結點類 用於表示多項式的一項 class node node int nexp,int ncoef private int exp 指數 int coef ...

鍊錶應用 多項式加法 乘法

鍊錶學習 多項式應用 通過引入insertpoly函式來完成加法乘法操作 以及類似功能的creat 函式,使我的多項式按照指數下降的方式插入節點 而不需要在輸入時人為的控制 include using namespace std 多項式adt鍊錶實現的型別宣告 typedef struct node...

鍊錶應用 多項式的加減法

輸入兩個多項式輸出這兩個多項式的和或者差 include include includestruct duoxiangshi struct duoxiangshi create b s inde if a i b s inde if a i b s 0 inde if a i x else if a...