資料結構,多項式運算,C ,鍊錶

2021-07-05 11:19:32 字數 3724 閱讀 4762

#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.面向結構的程式語言 將程式按照功能...