資料結構 一元多項式的乘法與加法運算

2021-09-17 20:24:02 字數 3231 閱讀 7160

中國大學mooc視屏講解

設計函式分別求兩個一元多項式的乘積與和。

輸入格式:

輸入分2行,每行分別先給出多項式非零項的個數,再以指數遞降方式輸入乙個多項式非零項係數和指數(絕對值均為不超過1000的整數)。數字間以空格分隔。

輸出格式:

輸出分2行,分別以指數遞降方式輸出乘積多項式以及和多項式非零項的係數和指數。數字間以空格分隔,但結尾不能有多餘空格。零多項式應輸出0 0。

輸入樣例:

4 3 4 -5 2 6 1 -2 0 3

5 20 -7 4 3 1

輸出樣例:

15 24 -25 22 30 21 -10 20 -21 8 35 6 -33 5 14 4 -15 3 18 2 -6 1 5 20

-4 4 -5 2 9 1 -2 0

以下是這道題的提示情況:

無法通過的情況,可能有:

1,沒有考慮,有零多項式,其中包括(輸入的時候,係數為0,指數不為0的這種情況)。

2,合併同項時出現抵消的這種情況。

對於1這種錯誤,比較好解決,下面我來說一下,2這種情況,當我們解決了 1這種情況呢。那麼2這種情況就好解決多了,第一,我們不需要考慮,相乘時,會產生係數為0的這種情況,而則種情況,只會發生在,相加的時候。所以在這裡我將告訴你們兩種解決方案。

對於第一種:就是,每次相加的時候我們就處理,等於0的這種情況,對於 多項式加法運算 就是不新增這個節點,對於 多項式乘法運算 就是刪除這個節點,這種方法我認為較為複雜。

那麼第二種方法時怎麼樣的呢?就是這些情況我都不考慮,那我們怎麼處理 等於0的這種情況呢,我們只需要在輸出的時候加上乙個條件,係數等於0,我們就不輸出,不就可以了嗎?

對於二這種情況可以試試輸入如下資料進行測試:

2 2 2 -2 1

2 2 2 2 1

第一種方法如下:

using namespace std;

typedef struct node *list;

list read(list l);

void print(list l);

list getmuti(list l1,list l2);

list getsum(list l1,list l2);

list read(list l)

} l->next=null;

return temp; }

void print(list l)

} else

cout<<0

else if(l1->next->expnext->exp)

else

//不管,他們的和是不是 0,我們都要,將l1,l2後移乙個單位。

l1 = l1->next;

l2 = l2->next;

} } if(l1->next)

l->next = l1->next;

else

l->next = l2->next;

return temp;

}list getmuti(list l1,list l2)

l->next = null;

l = temp;

list lb = l2->next;

bool flag = true;

/* 在這裡說明一下 flag 在這裡的作用:

用於標記,在下面的程式中,是否進行了, if( > ) 和 if( == )裡面的操作,

若進行了,則flag就變為 false,則不用進行, while(.....),結束後的第一條語句,

這條語句的含義是,在l中沒有找到,這個 待插入項 的位置,所以將其置於l的尾部。

*/ while(lb&&lb->next)

else if(s->exp == l->next->exp)

else

l->next->coef += s->coef;

flag = false;

break;

}l = l->next;

}if(flag)

l = temp;

la = la->next;

flag = true;

} lb = lb->next;

} return temp; }

int main()

第二種方法:

using namespace std;

typedef struct node *list;

list read(list l);

void print(list l);

list getmuti(list l1,list l2);

list getsum(list l1,list l2);

list read(list l)

} l->next=null;

return temp; }

void print(list l)

if(l->next!=null)

if(val->next==null)

cout

} if(num==temp)

cout<<0

else if(l1->next->expnext->exp)

else

} if(l1->next)

l->next = l1->next;

else

l->next = l2->next;

return temp;

}list getmuti(list l1,list l2)

l->next = null;

l = temp;

list lb = l2->next;

while(lb&&lb->next)

else if(s->exp == l->next->exp)

l = l->next;

}if(l->next==null)

l = temp;

la = la->next;

} lb = lb->next;

} return temp;

}int main()

資料結構 一元多項式的乘法與加法運算

7 2 一元多項式的乘法與加法運算 15 分 時間限制 200 ms 記憶體限制 64 mb 長度限制 16 kb 設計函式分別求兩個一元多項式的乘積與和。輸入分2行,每行分別先給出多項式非零項的個數,再以指數遞降方式輸入乙個多項式非零項係數和指數 絕對值均為不超過1000的整數 數字間以空格分隔。...

資料結構 一元多項式的乘法與加法運算

設計函式分別求兩個一元多項式的乘積與和。輸入分2行,每行分別先給出多項式非零項的個數,再以指數遞降方式輸入乙個多項式非零項係數和指數 絕對值均為不超過1000的整數 數字間以空格分隔。輸出分2行,分別以指數遞降方式輸出乘積多項式以及和多項式非零項的係數和指數。數字間以空格分隔,但結尾不能有多餘空格。...

資料結構 一元多項式的乘法與加法運算

設計函式分別求兩個一元多項式的乘積與和。輸入格式 輸入分2行,每行分別先給出多項式非零項的個數,再以指數遞降方式輸入乙個多項式非零項係數和指數 絕對值均為不超過1000的整數 數字間以空格分隔。輸出格式 輸出分2行,分別以指數遞降方式輸出乘積多項式以及和多項式非零項的係數和指數。數字間以空格分隔,但...