怎麼用C 煉表處理一元多項式的乘法與加法運算

2021-10-10 03:24:38 字數 2103 閱讀 8931

pta資料結構與演算法題目集【中文】第二道程式設計題

**用單鏈表處理,這類做法**量較多,我的注釋盡量寫的仔細

#include

#include

using

namespace std;

struct node

//建構函式,讓指標初始值為空};

void

print

(node* x)

while

(x->next)

cout << x-

>coefficient <<

" "<< x-

>index << endl;

//最後無空格

}node*

add(node* a, node* b)

if(b-

>coefficient ==0)

if(a-

>index > b-

>index)

a = a-

>next;

}else

if(a-

>index < b-

>index)

b = b-

>next;

}else

if(a-

>coefficient + b-

>coefficient !=0)

a = a-

>next;

b = b-

>next;

}else}if

(tail !=

null

&& b !=

null

) tail-

>next = b;

}else

if(tail !=

null

&& a !=

null

) tail-

>next = a;

}return head;

}node*

multy

(node* a, node* b)

node* head =

null

,* tail =

null

; node* t = b;

while

(t !=

null

) node* tmp =

newnode

(a->coefficient * t-

>coefficient, a-

>index + t-

>index);if

(head ==

null

) head = tail = tmp;

else

t = t-

>next;

} aixb.

emplace_back

(head)

;//如果b中只有零結點,最後head裡是一堆null,所以下面的for迴圈裡的加法形參會遇到null,返回另乙個引數就行

a = a-

>next;}if

(aixb.

size()

==0)return

null

; node* ret = aixb[0]

;for

(int i =

1; i < aixb.

size()

; i++

)return ret;

}int

main()

}int n2;

cin >> n2;

node* head2 =

null

,* tail2 =

null

;for

(int i =

0; i < n2; i++)}

node* ans1 =

multy

(head1, head2)

; node* ans2 =

add(head1, head2)

;print

(ans1)

;print

(ans2)

;}

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

在資料結構線性表的鍊錶學習中有乙個很有趣的題目 計算兩個多項式的加 減 乘和多項式的導數。題目不難,將多項式的係數和指數存進鍊錶,然後進行相應操作即可。一 加法 判斷指數是否相等,若相等則將係數相加,相加後不為零就開闢新空間,將新的係數存入結點,尾插進新煉表中。如果表示式 的指數小於表示式 的指數,...

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

在資料結構線性表的鍊錶學習中有乙個很有趣的題目 計算兩個多項式的加 減 乘和多項式的導數。題目不難,將多項式的係數和指數存進鍊錶,然後進行相應操作即可。一 加法 判斷指數是否相等,若相等則將係數相加,相加後不為零就開闢新空間,將新的係數存入結點,尾插進新煉表中。如果表示式 的指數小於表示式 的指數,...

鍊錶 一元多項式求導

7 1 一元多項式求導 20 分 設計函式求一元多項式的導數。以指數遞降方式輸入多項式非零項係數和指數 絕對值均為不超過1000的整數 數字間以空格分隔。以與輸入相同的格式輸出導數多項式非零項的係數和指數。數字間以空格分隔,但結尾不能有多餘空格。3 4 5 2 6 1 2 0輸出樣例 12 3 10...