C 資料結構 DS線性表 多項式相加

2021-08-28 23:56:05 字數 2181 閱讀 8585

對於一元多項式p(x)=p0+p1x+p2x2++pnxn,每個項都有係數和指數兩部分,例如p2x2的係數為p2,指數為2。

程式設計實現兩個多項式的相加。

例如5+x+2x2+3x3-5-x+6x2+4x4,兩者相加結果:8x2+3x3+4x4

其中係數5和-5都是x的0次方的係數,相加後為0,所以不顯示。x的1次方同理不顯示。

可用順序表或單鏈表實現。

第1行:輸入t表示有t組測試資料

第2行:輸入n表示有第1組的第1個多項式包含n個項

第3行:輸入第一項的係數和指數,以此類推輸入n行

接著輸入m表示第1組的第2個多項式包含m項

同理輸入第2個多項式的m個項的係數和指數

參考上面輸入第2組資料,以此類推輸入t組

假設所有資料都是整數

對於每1組資料,先用兩行輸出兩個原來的多項式,再用一行輸出運算結果,不必考慮結果全為0的情況

1.如果指數或係數是負數,用小括號括起來。

2.如果係數為0,則該項不用輸出。

3.如果指數不為0,則用符號^表示,例如x的3次方,表示為x^3。

4.多項式的每個項之間用符號+連線,每個+兩邊加1個空格隔開。

#include using namespace std;

#define ok 0

#define error -1

class listnode

};

class linklist

p->next = n;

return 0;

}void ll_display();

void add(linklist &l)

else

delete temp;

}else if(p->index > q->index)

else

}if(p == null)

l.head->next = null;

}};

linklist::linklist()

linklist::~linklist() //鍊錶**,要逐個結點**

head = null;

}void linklist::ll_display()

else if(p->data <0)

else

if(p->index != 0)

else

}p = p->next;

}cout<> t;

while(t--)

l1.ll_display();

cin >> n;

for(i=1;i<=n;i++)

l2.ll_display();

l1.add(l2);

l1.ll_display();

}return 1;

}

資料結構 鍊錶,多項式相加

指標真的是蠻重要的,基礎不牢怨不得別人,鍊錶差點給我學自閉,尤其是資料結構演算法這塊 下面分享乙個很簡單的鍊錶應用 多項式相加 ps 多項式錄入還不完善,故只能按指數從小往大挨個順序輸入 水平較差請多諒解,應用基礎 c 雖然可讀性不高但耐心點初學者應該都能讀懂 1.面向結構的程式語言 將程式按照功能...

資料結構實踐教程 線性表(一元多項式相加)

一 實驗要求 使用者根據自己的需求輸入兩個一元多項式,要求能夠顯示輸入的一元多項式,再將這兩個一元多項式相加,輸出結果。二 實現 include include include include include using namespace std typedef struct plnodeplno...

資料結構線性表的應用(集合 多項式)

今天老師提到了集合的運算,我就想起來需要用線性表來進行集合的運算 雖然陣列也可 前不久寫了多項式運算的 但是核心部分的加減還是有點模糊,決定細緻的再看一下 again 演算法有 void mergelist list la,list lb 時間複雜度o n m 1 順序有序表的合併 這裡簡述演算法步...