單鏈表實現有序多項式加法

2021-10-09 03:01:18 字數 2049 閱讀 9917

原理講解

使用鍊錶表示一元多項式

設多項式pn(x)=a0+a1x+a2x2+…+an*xn其中ai(i=0,1,2,…,n)是x的i次冪

的係數。在計算機中可使用乙個結點存放多項式的一項。

如果採用順序儲存結構來儲存此線性表,由於多項式中可能有多項的係數為0,順序儲存就會浪費大量儲存空間。故應採用單鏈表來儲存該線性表。

在單鏈表中,每個結點設3個域,分別為係數域d1,指數域d2和指標域

程式設計:輸入的引數:分別順序輸入多項式a和b的係數和冪次

輸出的結果:加和後的多項式

主函式的原始檔main.cpp呼叫createlistf函式建立儲存多項式資料的兩個單鏈表,然後呼叫sum函式對兩鍊錶進行加和(結果儲存於a鍊錶中),最後呼叫output函式輸出結果。

標頭檔案header.h包含鍊錶的資料結構,以及三個函式:**createlistf(),output(),sum()**的宣告。

function.cpp檔案為三個函式的具體定義。

main.cpp:

#include

#include

"header.h"

using

namespace std;

typedef

double datatype;

intmain()

header.h:

using

namespace std;

//資料型別為字元型

typedef

double datatype;

//資料型別為字元型

typedef

struct nodelinklist;

linklist*

createlistf()

;//鍊錶建立函式

void

output

(linklist* a)

;//結果展示函式

void

sum(linklist* a,linklist* b)

;//多項式加和函式

function.cpp:

#include

#include

"header.h"

linklist*

createlistf()

else

} r-

>next=

null

;return head;

}void

sum(linklist* a,linklist* b)

if(p-

>next-

>d2>s-

>next-

>d2)

if(p-

>next-

>d2

>next-

>d2)

p=p-

>next;s=s-

>next;

}while

(p->next==

null

&&s-

>next!=

null)}

void

output

(linklist* a)

}

輸入兩個多項式測試:

a: x + 2x3 + 4x6

b:5x + 2x2 + 4x3 + 5x5 + 3x6

程式執行結果:

單鏈表實現多項式的儲存和加法

採用單向鍊錶實現一元多項式的儲存並實現兩個多項式相加並輸出結果。演算法分析 不採用申請新節點的方法,要充分利用老節點。實現如下 include include include using namespace std typedef struct node jd,linklist linklist c...

資料結構 單鏈表實現多項式加法

要求 有兩組多項式,每組隨機輸入n組數,每組數輸入兩個值a,b,a代表係數,b代表指數,輸入資料無任何限制 只要是數字即可 思路 1.建立兩個鍊錶l1,l2分別存放兩組多項式 2.比較每組多項式,如果指數相同就把他們係數相加 詳解在下面 3.列印輸出 比較的詳解 在存放多項式的時候對存入資料進行排序...

單鏈表實現多項式相加

include include struct node void destroypoly struct node poly 釋放實現多項式申請的空間 return struct node createnode int coe,int exp 申請空間存放多項式當前項 struct node crea...