單鏈表實現多項式相加

2021-07-24 03:39:30 字數 1634 閱讀 7226

#include #include struct node;

void destroypoly(struct node* poly)//釋放實現多項式申請的空間

return;

}struct node* createnode(int coe,int exp)//申請空間存放多項式當前項

struct node* createpoly()//建立多項式

return poly;

}void polyadd(struct node* poly1,struct node* poly2)//計算多項式的和

temp1=temp1->next;

temp2=temp2->next;

}else if(temp1->expon>temp2->expon)

temp1=temp1->next;

}else

temp2=temp2->next;}}

while(temp1)

temp1=temp1->next;

}while(temp2)

temp2=temp2->next;

}if(!flag)//掃一遍,flag仍為0,說明多項式相加為0

printf("%d %d",0,0);

putchar('\n');

return;

}int main()

return 0;

}

根據多項式的結構特點,利用線性鍊錶來實現多項式相加,結點中存放各項的係數和指數,在預設使用者按降冪次序輸入多項式的各項後,構造相應的多項式。從頭掃瞄兩個多項式,用兩個指標分別指示兩個多項式的當前項,根據多項式相加的規則,對於指數相同的項,將其對應係數相加,若和不為零,則構成「和多項式」中的一項;對於兩個多項式中指數不同的項,可直接複製到和多項式中,並按從大到小的降冪排列。若多項式相加的結果為0,輸出0 0。本實驗只要求輸出多項式相加的和,因此只需在掃瞄時輸出相應的項,不需要建立乙個新的多項式儲存結果。

測試樣例:

4 3 4 -5 2 6 1 -2 0

3 5 20 -7 4 3 1

2 1 2 1 0

2 1 2 -1 0

2 -1000 1000 1000 0

2 1000 1000 -1000 0

1 999 1000

3 1 10 -4 5 3 0

4 3 8 4 7 -3 6 4 0

1 1 0

1 3 0

結果:5 20 -4 4 -5 2 9 1 -2 0

2 20 0

999 1000

0 01 10 3 8 4 7 -3 6 -4 5 7 0

4 0

分析:輸出結果時,應考慮到多項式的某一項係數為零時的情況,且**需要實現當多項式相加為零或兩個空多項式相加時的情況,即需要輸出結果為0 0。

心得:1.寫**不能只為了競賽,最終目的還是工作,因此要考慮使用者需求,**實現的簡便性等,平日的**也要像做工程一樣做好事先規劃與除錯,開始建立了乙個新多項式儲存結果再輸出,沒有考慮此實驗需求,後來改了過來,只輸出結果即可,還有,**要功能明確,分塊明顯,讓他人一眼看出此塊**實現什麼功能,自己除錯時也容易,如果堆在一塊,牽一發則動全身。

2.**要一氣呵成,自上而下,忌左補右補。

單鏈表實現多項式相加

本程式使用鍊錶實現了兩個多項式的相加。多項式的相加主要是考慮相加項的指數是否相同,如果相同則係數相加,指數不變。本程式當中,實現該過程的思想為,在錄入乙個多項式所有項的係數和指數以後,使用鍊錶思想構造一條單鏈表,記作鍊錶a,結 點儲存項的係數和指數。依照此法,構建第二條多項式鍊錶,記作鍊錶b。這樣準...

單鏈表應用 多項式實現(C )

一般用兩個類,結點類linknode和鍊錶類list,協同表示單鏈表,主要有3種方式 class list class linknode class list class list linknode first class linknode class list public linknode te...

多項式相加

include include include typedef struct polyn pol 建立有序多項式 pol creatpolyn else if cnew expn clast expn else cnew pol malloc sizeof pol scanf d d cnew co...