1.問題描述:設有兩個帶頭指標的單鏈表表示兩個一元稀疏多項式a、b,實現兩個一元稀疏多項式的處理。
2.實現要求:(1)輸入並建立多項式;(最好通過檔案輸入,多項式最好不少於3項)
(2)輸出多項式,輸出形式為整數序列:n,c1,e1,c2,ez…cn,en,其中n是多項式的項數,ci,e;分別為第i項的係數和指數。序列按指數降序排列;(注意係數為0的項需要從鍊錶中刪除)
(3)多項式a和b相加,建立多項式a+b,輸出相加的多項式;
(4)多項式a和b相減,建立多項式a-b,輸出相減的多項式;
(5)多項式a和b相乘,建立多項式axb,輸出相乘的多項式;
(6)設計乙個選單,至少具有上述操作要求的基本功能。
#include
#include
typedef
struct node
polynode;
//多項式節點 polynomial node
typedef polynode* polynomial;
polynomial createpolynomial()
//建立多項式
}else
}else
}else
}return head;
}//多項式與指定單項式相乘,該單項式為 coefx^expn
polynomial multiply
(polynomial poly,
float coef,
int expn)
p->next =
null
;return poly;
}void
add(polynomial poly1, polynomial poly2)
//把 poly2 加到 poly1 上
else
if(p->expn < q->expn)
else
else
t = q;
q = q->next;
free
(t);}}
if(p)
r->next = p;
if(q)
r->next = q;
}//多項式減法 poly1-poly2形成乙個新的多項式
polynomial polysubtract
(polynomial poly1, polynomial poly2)
p->next =
null
;add
(poly, poly1)
;//利用加法
return poly;
}//多項式相加 poly1+poly2形成乙個新的多項式
polynomial polyadd
(polynomial poly1, polynomial poly2)
else
if(p->expn < q->expn)
else
q = q->next;
p = p->next;}}
while
(p)while
(q) r->next =
null
;return poly;
}polynomial polymultiply
(polynomial poly1, polynomial poly2)
//多項式相乘
return poly;
}void
printpoly
(polynomial poly)
//列印多項式
p = p->next;
if(p &&
(p->coef >0)
)printf
("+");
}if(p->expn ==
0&&p->coef!=0)
else
if(p->coef!=0)
printf
("\n");
}}void
clear
(polynomial poly)
//釋放記憶體
} poly =
null;}
intmain()
一元稀疏多項式的運算
輸入並建立多項式 輸出多項式,輸出形式為整數序列 n,c1,e1,c2,e2 cn,en,其中n是多項式的項數,ci,ei分別為第i項的係數和指數。所有輸出都按指數降序排列。多項式a和b相加,建立多項式a b,輸出相加的多項式 多項式a和b相減,建立多項式a b,輸出相減的多項式 多項式a和b相乘,...
一元稀疏多項式加減
一元稀疏多項式加減 include include include define ok 1 define error 0 typedef int status typedef struct pnodepnode,polynomial 建立乙個多項式鍊錶 status creatpolynnomial...
一元多項式運算
一 實驗目的 1.熟練掌握c c 語言中指標的操作。2.掌握鍊錶的常用演算法。二 問題描述 一元多項式可以表示為線性表,相應地一元多項式的運算可以用線性表的基本運算來實現。本實驗要求以煉表為儲存結構,設計乙個一元多項式運算器,實現一元多項式的建立 銷毀 複製 列印顯示 四則運算等功能。三 實驗內容 ...