日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

线性表实现一元多项式的表示及相加(C语言实现)【线性表】

發布時間:2025/3/20 编程问答 40 豆豆
生活随笔 收集整理的這篇文章主要介紹了 线性表实现一元多项式的表示及相加(C语言实现)【线性表】 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

  • 一元多項式的表示及相加
    • 一元多項式抽象數據類型的動態鏈式表示
    • 操作舉例:構造多項式

一元多項式的表示及相加

符號多項式的表示及其操作是線性表處理的典型用例。
一個一元多項式 Pn(x) 可以表示為 :
Pn(x)=p0+p1x+p2x2+…+pnxn
(最多有 n+1 項)它由 n+1 個系數唯一確定。

因此可用一個線性表 P 來表示:P = ( p0, p1, p2, …, pn )
每一項的指數 i 隱含在其系數 pi 的序號里。

假設 Qm(x) 是一元 m 次多項式,同樣可用線性表 Q 表示:
Q = (q0, q1, q2, …, qm

若 m < n,則兩個多項式相加的結果 Rn(x)= Pn(x)+ Qm(x)
可用線性表 R 來表示:
R = (p0+ q0, p1+ q1, p2+q2, …, pm+ qm, pm+1, …, pn

但是只存儲系數的方案對存在大量零系數的多項式并不適用。

例如:
S(x) = 1 + 3x10000 + 2x20000

要用一個長度為 20001 的線性表來表示,表中僅有 3 個非零系數,會浪費大量存儲空間。

若只存儲非零系數項,則必須同時存儲相應的指數。

一般一元 n 次多項式 (只表示非零系數項) 可寫成:

其中 pi≠0 (i =1, 2, …, m),n = em > em-1 > … > e1 >= 0

用一個長度為 m 且每個數據元素有兩個數據項(系數項和指數項)的線性表 (( p1, e1), ( p2, e2), …, ( pm, em)) 便可唯一確定多項式 Pn(x)。 對于 S(x) 類的多項式將大大節省空間。

所以這里我們選擇鏈式存儲結構。

例:假設多項式
A17(x)=7+3x+9x8+5x17
與 B8(x)=8x+22x7-9x8
已經用單鏈表表示,其頭指針分別為 A 與 B, 如下圖所示。

將兩個多項式相加為 C17(x)=7+11x+22x7+5x17

一元多項式抽象數據類型的動態鏈式表示

typedef struct{float coef; //系數int exp; //指數 }term, ElemType;typedef LinkList Polynomal; Polynomal pl;

操作舉例:構造多項式

void CreatePolyn(Polynomal &p,int m) {//構建一個有序鏈表p,其中元素為結構體,有m個元素InitList(p); h=p;e.coef=0.0;e.expn=-1;SetCurElem(h,e);//設置頭節點的數據元素for(i=1;i<m+1;i++){//向結構體變量e中輸入系數和指數if(!LocateElem(p,e,q,(*cmp)())){if(MakeNode(s,e)) //生成節點s;s是指針變量InsFirst(q,s); //將s節點插在q節點之前 }} }

總結

以上是生活随笔為你收集整理的线性表实现一元多项式的表示及相加(C语言实现)【线性表】的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。