鍊錶應用 多項式加法 乘法

2021-07-30 20:43:11 字數 1605 閱讀 8654

//鍊錶學習:多項式應用

//通過引入insertpoly函式來完成加法乘法操作

//以及類似功能的creat()函式,使我的多項式按照指數下降的方式插入節點

//而不需要在輸入時人為的控制

#include using namespace std;

//多項式adt鍊錶實現的型別宣告

typedef struct node* ptrtonode;

struct node

;typedef ptrtonode polynomial;

polynomial creat()

*/ //在新建多項式時,將多項式按照指數降序插入

//完全借用了insertpoly函式

while(p->next!=null)else if(p->next->exponent==s->exponent)

p=p->next;

} if(p->next==null)

cout<<"please input coefficient and exponent and end with 9999"<>c>>e;

} return head;

}void show(ptrtonode head)

cout//需要將新節點插入末尾,但是此時p1=null;即便是可以將p1=p0;但是。。。早已和前面的鍊錶失去了聯絡。。

//這塊需要多想想

//退出迴圈兩種情況:1.p1->next=null,則將節點插入最後;2.成功插入,函式結束

//功能:將節點插入,完成指數降序,且合併同類項

//將新建節點插入特定的位置,要是有指數相同的,合併;兩者都不滿足,插入末尾

ptrtonode insertpoly(ptrtonode head, ptrtonode p0)

else if(p1->next->exponent==p0->exponent)

p1=p1->next;

} if(p1->next==null)

return head;

}//問題:在我的插入函式裡,最後if語句裡,插入乙個節點的時候

//直接將p1->next=p0,也就是當我的p0-next!=null時,其實我插入的不只乙個節點,而是將p0以後的整個鍊錶插入

//解決:每次要插入時新建乙個新節點,這個新節點next=null;

//加法:我沿用了乘法的思想

//因為我在新建多項式時,完成了將指數降序排列

//因此,多項式加法可以直接將乙個多項式,插入到另乙個多項式

//而不是以前那種,直接對兩個多項式從頭開始遍歷,然後歸併

ptrtonode addpoly( ptrtonode poly1, ptrtonode poly2)

return poly2;

}ptrtonode propoly( ptrtonode poly1, ptrtonode poly2)

//內層迴圈結束後一定要p2重新指向第二個多項式第乙個節點

p2=poly2->next;

p1=p1->next;

}

return propoly;

}int main()

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

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

多項式加法和乘法(鍊錶實現)

資料結構樹上的 練習留著以後複習 polynomial.h include using namespace std struct pnode pnode int d,int c,pnode n null class polynomial polynomial int d,int c bool ins...

多項式加法 乘法

學校acm上面的題目,題目不難,不少細節。本質就是鍊錶操作,首先是題目要求 輸入 兩組資料,每一組代表乙個一元整係數多項式,有多行組成,其中每一行給出多項式每一項的係數和指數,這些行按指數遞減次序排序,每一組結束行為 0 1 輸出 三組資料,前兩組為一元整係數多項式,最後一組為兩個多項式的和。一元整...