#include#include#include//標準庫標頭檔案包含函式exit()
using namespace std;
struct node //建立結構體
; typedef node polynomial;//重新命名
struct lnode
; typedef lnode* link;
void create(link &l, int n); //建立乙個n項多項式函式
void print(link l); //輸出鍊錶函式
void add(link &pc, link pa, link pb); //多項式相加函式
void substract(link &pc, link pa, link pb);//多項式相減函式
void copy(link &pc, link pa);//把乙個鍊錶的內容複製給另乙個鍊錶建立表函式
int judge(link pa, link e);//判斷指數是否與多項式中已存在的某項相同函式
void destroy(link &l)//銷毀鍊錶函式
delete l;
l = null;
} void create(link &l, int n)//建立含有n個鍊錶型別結點的項,即建立乙個n項多項式
link p, newp;//定義兩個鍊錶
l = new lnode;
l->next = null;
(l->data).exp = -1;//建立頭結點
p = l;
for (int i = 1; i <= n; i)
newp->next = null;
p = l;
if (newp->data.coef == 0)//判斷係數是否為0
while ((p->next != null) && ((p->next->data).exp<(newp->data).exp)) //利用while迴圈使p指向指數最小的項
if (!judge(l, newp))//判斷指數是否與多項式中已存在的某項相同
else
}} int judge(link l, link e)//判斷指數是否與多項式中已存在的某項相同
void print(link l)//輸出鍊錶
//項的係數小於的種情況
if ((p->data).coef<0)
p = p->next;
while (p != null)
if ((p->data).coef<0)
p = p->next;}}
cout << endl;
} void copy(link &pc, link pa)//把乙個鍊錶的內容複製給另乙個鍊錶 }
void add(link &pc, link pa, link pb)//兩個一元多項式相加
else if (p1->data.exp>p2->data.exp)
else //當指數相同時兩係數相加
else}}
if (p1 != null)
if (p2 != null)
} void substract(link &pc, link pa, link pb)//兩個多項式相減
add(pc, pa, pt);//呼叫加法函式進行減法
destroy(pt);
} void multiply(link &pc, link pa, link pb)//將兩個一元多項式相乘函式
add(pd, pc, p);
copy(pc, pd);
p1 = p1->next;
p2 = pb->next;
destroy(p);
destroy(pd);
}} void division(link &pc, link pa, link pb)//將兩個一元多項式相除函式
add(pd, pc, p);
copy(pc, pd);
p1 = p1->next;
p2 = pb->next;
destroy(p);
destroy(pd);
}} void menu()//選單函式
void main()
add(l, la, lb);
cout << "" << endl;
cout << "待相加的兩個一元多項式為:" << endl;
cout << "" << endl;
cout << "a的多項式為:";
print(la);
cout << "" << endl;
cout << "b的多項式為:";
print(lb);
cout << "" << endl;
cout << "相加後的結果為:";
print(l);
cout << "" << endl;
destroy(l);
break;
case 3:
substract(l, la, lb);
cout << "相減的兩個一元多項式為:" << endl;
cout << "" << endl;
cout << "a的多項式為:";
print(la);
cout << "" << endl;
cout << "b的多項式為:";
print(lb);
cout << "" << endl;
cout << "相減後的結果為:";
print(l);
cout << "" << endl;
destroy(l);
break;
case 4:
if (la == null || lb == null)
multiply(l, la, lb);
cout << "相乘的兩個一元多項式為:" << endl;
cout << "" << endl;
cout << "a的多項式為:";
print(la);
cout << "" << endl;
cout << "b的多項式為:";
print(lb);
cout << "" << endl;
cout << "相乘後的結果為:";
print(l);
destroy(l);
cout << "" << endl;
break;
case 5:
if (la == null || lb == null)
division(l, la, lb);
cout << "相除的兩個一元多項式為:" << endl;
cout << "" << endl;
cout << "a的多項式為:";
print(la);
cout << "" << endl;
cout << "b的多項式為:";
print(lb);
cout << "" << endl;
cout << "相除後的結果為:";
print(l);
destroy(l);
cout << "" << endl;
break;
case 0:exit(1);
print(l);
cout << "" << endl;
break;}}
}
資料結構 用鍊錶實現多項式運算
一元多項式的運算包括加法減法和乘法,而多項式的加法和乘法都可以依靠多項式的加法來實現,所以本文僅僅講解如何用鍊錶實現一元多項式的加法。數學上的一元多項式的表示是p x p0 p1 x p2 x 2 p3 x 3 pn x n 用鍊錶來表示就是p p0,p1,p2,pn 所謂的多項式相加就是同類項的合...
資料結構 鍊錶 多項式加法
問題描述 用單鏈表儲存一元多項式,並實現兩個多項式的加法。可以看出,這種方案適合對某些多項式的處理。但是,在處理一些次數高但項數少的多項式時,存在浪費空間的現象,會有很多閒置的0。可以使用如下定義的單鏈表結構儲存多項式 鍊錶中的每乙個結點是多項式中的一項,結點的資料域包括指數和係數兩部分,由指標域連...
資料結構 鍊錶,多項式相加
指標真的是蠻重要的,基礎不牢怨不得別人,鍊錶差點給我學自閉,尤其是資料結構演算法這塊 下面分享乙個很簡單的鍊錶應用 多項式相加 ps 多項式錄入還不完善,故只能按指數從小往大挨個順序輸入 水平較差請多諒解,應用基礎 c 雖然可讀性不高但耐心點初學者應該都能讀懂 1.面向結構的程式語言 將程式按照功能...