從多項式相加看線性結構

2021-08-20 10:32:18 字數 1677 閱讀 5447

給出兩個多項式:

大家都很清楚多項式相加,即為相同指數項對應相加。那我們如何使用程式來描述兩個多項式相加呢?大家首先想到的是用陣列描述,多項式的指數使用下標來表示,前面的係數為對應陣列中的值。f1(x)表示如下:

f2(x)表示如下:

其實只要寫個for迴圈,相同下標的相加即可,非常簡單。下面問題來了,如果面對的多項式是類似

這種形式的話,0項太多,上面的這種辦法就會很冗餘,白白浪費空間。因此需要採取另外的辦法來描述。上面的方式問題出在我們使用陣列下標用來描述指數,當指數很大的時,就會出現很多係數為0項,我們的想法是不要0項,只將非0項儲存起來進行描述。因此我們可以將係數和指數繫結到一起作為乙個整體,類似這種方式(係數,指數)。還是上面兩個多項式,採用結構體+陣列的方式進行描述。f1(x)表示如下:

f2(x)表示如下:

其中指數是按照由大到小的順序儲存。大家可以看到指數很大的時候,也不會浪費儲存空間。下面我們用c程式來實現。

#include#define f1_length 3

#define f2_length 3

struct node

;struct node f1_nodes[3];

struct node f2_nodes[3];

void main()else if (f1_nodes[i].expon < f2_nodes[j].expon)else

}while (i通過上面的方式即可完成多項式的計算,但是上面的方式依然不是特別好,因為陣列的大小是固定的,沒辦法動態改變,接下來我們使用鍊錶的方式來儲存非零項,定義如下資料型別:

typedef struct node *polylink;

struct node

;

f1和f2鍊錶儲存形式為:

c語言實現如下:

多項式相加

include include include typedef struct polyn pol 建立有序多項式 pol creatpolyn else if cnew expn clast expn else cnew pol malloc sizeof pol scanf d d cnew co...

多項式相加

include include typedef struct node 多項式資料型別的定義 polynode polynode createpoly 建立鍊錶 r next null return l void addpoly polynode pa,polynode pb 兩個多項式相加 els...

多項式相加

一.題目描述 輸入兩個多項式,按照指數遞增輸入 輸出相加和。二.題目分析 在書中第二章節中出現了多項式相加的演算法,使用鍊錶實現的,在此簡單使用結構體構造多項式的項。三.include define n 10 typedef struct item int m,n,k 0 item a n b n ...