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