該一元稀疏多項式計算器的基本功能是:
(1)輸入並建立多項式;
(2)輸出多項式,輸出形式為整數序列:
n,c1,e1,c2,e2,….,cn,en, 其中n
是多項式的項數,ci和
ei分別是第
i項的係數和指數,序列按照指數降序排列;
(3)多項式a和
b相加,建立多項式
a+b;
(4)多項式a和
b相乘,建立多項式a*b.
演算法描述及實驗步驟
對於兩個多項式,將它們分別存入兩個迴圈鍊錶中,從兩個多項式的鍊錶的第乙個元素結點開始檢測,對每乙個結點做如下操作:
(1)若兩個多項式中對應結點的指數值相等,則將它們的係數相加。如果相加結果不為零,則形成乙個新結點後鏈入新鍊錶的末尾。然後再檢測兩個鍊錶中的下乙個結點。
(2)若兩個多項式中對應結點的指數值不相等,則復抄指數值大的那個結點中的指數值與系數值,形成乙個新結點後鏈入(1)中所述的鍊錶尾。然後再檢測指數值小的鍊錶中的當前結點與指數值大的鍊錶中的下乙個結點。
上述過程一直做到兩個鍊錶中的鍊錶中的所有結點均檢測完為止。
#include
//#include null 0
#define len sizeof(struct polynomial)
using namespace std;
struct polynomial//定義多項式 ;
struct polynomial *creat(/*struct polynomial *head */)
free(p1);//釋放最後乙個節點所佔記憶體
return(head);
}struct polynomial *insert(struct polynomial *qa, struct polynomial *qb,struct polynomial*qc)
else
else //(qa->index==qb->index)
else }}
}if(qa==null)
else
return head;
}void print(struct polynomial *head)
else
p=p->next;}}
void main()
【測試資料】
(2x+5x^8-3.1x^11
)+(7-5x^8+11x^9)=(-3.1x^11+11x^9+2x+7)
(1+x+x^2+x^3+x^4+x^5)+(-x^3-x^4)=(1+x+x^2+x^5)
(x+x^100
)+(x^100+x^200)=(x+2x^100+x^200)
(x+x^2+x^3)+0=x+x^2+x^3
資料結構 鍊錶 多項式加法
問題描述 用單鏈表儲存一元多項式,並實現兩個多項式的加法。可以看出,這種方案適合對某些多項式的處理。但是,在處理一些次數高但項數少的多項式時,存在浪費空間的現象,會有很多閒置的0。可以使用如下定義的單鏈表結構儲存多項式 鍊錶中的每乙個結點是多項式中的一項,結點的資料域包括指數和係數兩部分,由指標域連...
資料結構 鍊錶,多項式相加
指標真的是蠻重要的,基礎不牢怨不得別人,鍊錶差點給我學自閉,尤其是資料結構演算法這塊 下面分享乙個很簡單的鍊錶應用 多項式相加 ps 多項式錄入還不完善,故只能按指數從小往大挨個順序輸入 水平較差請多諒解,應用基礎 c 雖然可讀性不高但耐心點初學者應該都能讀懂 1.面向結構的程式語言 將程式按照功能...
一元多項式的相加 資料結構鍊錶實現
include includetypedef struct node polynomial 操作名 void initpolynomial polynomial l 建立鍊錶的頭結點 void createpolynomial polynomial l,float coe,int index 在鍊錶...