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

2021-10-08 01:32:14 字數 2388 閱讀 9658

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

輸入分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

四個得分點

測試點提示

0sample換個數字

1同類項合併時有抵消

2係數和指數取上限,結果有零多項式

3輸入有零多項式和常數多項

我卡在2和3了,總是說我結果錯誤,直接修改2發現不行(我真的去根據上限新增判斷了我好傻),於是從3入手

於是我測試了↓ 驚奇地發現我的結果裡並沒有合併成乙個數

2 1 0 2 0

2 3 0 4 0

於是怒而在兩個函式迴圈中新增if語句判斷是否和上乙個資料的指數相同

if (t1->expon==rear->expon)//加法裡的

rear->coef += (t1->coef+t2->coef);

if (t1->expon+t2->expon==rear->expon)//乘法裡的

rear->coef += (t1->coef*t2->coef);

這裡都是新增在第一次做加法/乘法迴圈遍歷的地方,可以直接與上乙個資料進行比較,是因為題目中有要求需要用指數降序來輸入資料,所以新的指數要麼等於上乙個,要麼比上乙個小,不存在反覆的情況。

結果不僅測試點3通過了,測試點2也神奇地通過了……

我覺得測試點2應該是考驗比如有沒有把!p作為條件返回「0 0」的,但是不知道為什麼會和測試點3有牽連,還沒想明白

#include #include typedef struct polynode *polynomial;    //定義結構體指標的名字

struct polynode;

polynomial polyread();

void printpoly();

void attach();

polynomial mult();

polynomial add();

int main()

polynomial polyread()

t = p;

p = p->link;

free(t);

return p;

}void attach(int c,int e,polynomial *prear)

void printpoly(polynomial p)

while(p)

printf("\n");

}polynomial mult(polynomial p1,polynomial p2)

t2 = t2->link;

while(t2)

if(rear->link && rear->link->expon ==e)

}else if(rear->link && (rear->link->exponlink;

t->coef = c;

t->expon = e;

t->link = rear->link;

rear = rear->link;

printf("\n");

printpoly(p);

}else

t1 = t1->link;

}t2 = t2->link;

}t2 = p;

p = p->link;

free(t2);

return p;

}polynomial add(polynomial p1,polynomial p2)

else if(t1->exponexpon)

else if(t1->expon==t2->expon)

t1 = t1->link;

t2 = t2->link;}}

while(t1)

while(t2)

t = p;

p = p->link;

free(t);

return p;

}

在過程中,我曾把乙個迴圈語句的條件和語句裡的改變條件的變數搞錯了,簡單測試的幾個結果一直正確,但測試點3一直顯示記憶體超限,是因為變數搞錯了以後鍊錶一直不指向下乙個結點,導致了無限迴圈。

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

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

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

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

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

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