/*
檔名稱:第4周專案6--多項式求和.cpp
作 者:呂云雙
完成日期:2023年10月8日
版 本 號:v1.0
問題描述:用單鏈表儲存一元多項式,並實現兩個多項式的加法。
輸入描述:若干資料。
程式輸出:多項式a,多項式b,有序多項式a,b,相加後的多項式。
*/
處理步驟:
(1)若兩個多項式中當前結點的指數值相同,則它們的係數相加,結果儲存到p1結點,並將p2結點刪除。如果相加後的係數不為0,p1指向第乙個多項式的下乙個結點,準備隨後的工作,否則,不儲存係數為0的項,將當前p1結點刪除。
(2)當兩個多項式中對應結點的指數值不相等時,若p1指向的結點的指數大,則p1簡單地指向下一結點即可;而p2指向的結點大時,需要將p2結點插入到p1前,然後p2再重新指回到第二個多項式中的下一結點,繼續進行處理。
(3)檢測過程直到其中的任乙個鍊錶結束。若p1不為空,第乙個多項式中的剩餘項已經在鍊錶中,不作處理,如果p2不為空,只需要將p2鏈結到相加後的第乙個多項式末尾。
#include #include #define max 20 //多項式最多項數
typedef struct //定義存放多項式的陣列型別
polyarray;
typedef struct pnode //定義單鏈表結點型別,儲存多項式中的一項,鍊錶構成多項式
polynode;
void disppoly(polynode *l) //輸出多項式
printf("\n");
}void destroylist(polynode *&l) //銷毀單鏈表
free(p);
}void createlistr(polynode *&l, polyarray a, int n) //尾插法建表
r->next=null; //終端結點next域置為null
}void sort(polynode *&head) //按exp域遞減排序
}}void add(polynode *ha,polynode *hb,polynode *&hc) //求兩有序集合的並,完成加法
else if (pa->expexp)
else //pa->exp=pb->exp
pa=pa->next;
pb=pb->next;}}
if (pb!=null) pa=pb; //複製餘下的結點
while (pa!=null)
tc->next=null;
}int main()
,,,};
polyarray b= ,,,,};
createlistr(ha,a,4);
createlistr(hb,b,5);
printf("原多項式a: ");
disppoly(ha);
printf("原多項式b: ");
disppoly(hb);
sort(ha);
sort(hb);
printf("有序多項式a: ");
disppoly(ha);
printf("有序多項式b: ");
disppoly(hb);
add(ha,hb,hc);
printf("多項式相加: ");
disppoly(hc);
destroylist(ha);
destroylist(hb);
destroylist(hc);
return 0;
}
執行結果:
知識點:**typedef struct pnode //定義單鏈表結點型別,儲存多項式中的一項,鍊錶構成多項式 polynode;
中的struct pnode *next} 成員p是指向與節點型別完全相同的指標。 在鍊錶節點的資料結構中,非常特殊的一點就是結構體內的指標域的資料型別使用了未定義成功的資料型別。這是在c中唯一規定可以先使用後定義的資料結構。
初學者注意:單鏈表的建立過程有以下幾步: 1 ) 定義鍊錶的資料結構。 2 ) 建立乙個空表。 3 ) 利用m a l l o c ( )函式向系統申請分配乙個節點。 4 ) 將新節點的指標成員賦值為空。若是空表,將新節點連線到表頭;若是非空表,將新 節點接到表尾。 5 ) 判斷一下是否有後續節點要接入鍊錶,若有轉到3 ),否則結束。
總結:明確每個函式的作用,建立的函式,排序的函式,計算(完成加法)的函式,列印結果的函式,銷毀的函式,缺一不可
第四周專案6 多項式求和
問題及 檔名稱 多項式求和.cpp 作 者 杜文文 完成日期 2015年 10月 11日 問題描述 用單鏈表儲存一元多項式,並實現兩個多項式的加法。1 儲存多項式的資料結構 多項式的通式是p n x a n x n a n 1 x n 1 a 1 x a 0 n次多項式共有n 1項。直觀地,可以定義...
第四周專案6 多項式求和
檔名稱 test.cpp 完成日期 2015年10月12日 版本號 vc 6.0 問題描述 用單鏈表儲存一元多項式,並實現兩個多項式的加法。include include define max 20 多項式最多項數 typedef struct 定義存放多項式的陣列型別 polyarray type...
第四周專案6 多項式求和
煙台大學計算機與控制工程學院 問題描述 用單鏈表儲存一元多項式,並實現兩個多項式的加法 輸入描述 無 輸出描述 include include define max 20 多項式最多項數 typedef struct 定義存放多項式的陣列型別 polyarray typedef struct pno...