*問題描述:用單鏈表儲存一元多項式,並實現兩個多項式的加法。
可以看出,這種方案適合對某些多項式的處理。但是,在處理一些次數高但項數少的多項式時,存在浪費空間的現象,會有很多閒置的0。
可以使用如下定義的單鏈表結構儲存多項式:鍊錶中的每乙個結點是多項式中的一項,結點的資料域包括指數和係數兩部分,由指標域連線起多項式中的各項。
用於表示多項式的鍊錶將如下圖所示,在建立多項式的鍊錶時,已經令結點按指數由大到小的順序排列。
*輸入描述:無
*輸出描述:原多項式a: 1.2+2.5x+3.2x^3-2.5x^5
原多項式b: -1.2+2.5x+3.2x^3+2.5x^5+5.4x^10
有序多項式a: -2.5x^5+3.2x^3+2.5x+1.2
有序多項式b: 5.4x^10+2.5x^5+3.2x^3+2.5x-1.
多項式相加: 5.4x^10+6.4x^3+5x
*/#include
#include
#define max 20 //多項式最多項數
typedef
struct
//定義存放多項式的陣列型別
polyarray;
typedef
struct pnode //定義單鏈表結點型別,儲存多項式中的一項,鍊錶構成多項式
polynode;
/* polynode *ha,*hb,*hc;
polyarray a= ,,,};
polyarray b= ,,,,};
createlistr(ha,a,4);
createlistr(hb,b,5);
*/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->exp
exp)
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;
學習心得:
運用兩個結構體定義陣列和指標,前者方便建立多項式,或者方便排序,相加,輸出和銷毀。
執行結果:
鍊錶的多項式加法鍊錶的多項式加法
老師給的模板看的我不要不要的,真心難看,看了很久才把過載加法搞定了。include using namespace std include 定義結點類 用於表示多項式的一項 class node node int nexp,int ncoef private int exp 指數 int coef ...
資料結構 多項式加法與乘法 鍊錶實現
int main t p p p link free t return p 如何讓兩個多項式相加 ploynomail polyadd polynomial p1,polynomial p2 for p1 p1 p1 link attach p1 coef,p1 expon,rear for p2 ...
資料結構 鍊錶,多項式相加
指標真的是蠻重要的,基礎不牢怨不得別人,鍊錶差點給我學自閉,尤其是資料結構演算法這塊 下面分享乙個很簡單的鍊錶應用 多項式相加 ps 多項式錄入還不完善,故只能按指數從小往大挨個順序輸入 水平較差請多諒解,應用基礎 c 雖然可讀性不高但耐心點初學者應該都能讀懂 1.面向結構的程式語言 將程式按照功能...