5.6m元多项式的表示
在一般情況下使用廣義表多數(shù)既非是遞歸表,也不為其他表所共享。對(duì)廣義表可以這樣理解,廣義表中的一個(gè)數(shù)據(jù)元素可以是另一個(gè)廣義表,一個(gè)m元多項(xiàng)式的表示就是廣義表的這種應(yīng)用的典型實(shí)例。
由于m元多項(xiàng)式中每一項(xiàng)得病變化數(shù)目的不均勻性和變?cè)畔⒌闹匾?#xff0c;故不適合用線性表。如下面這個(gè)三元多項(xiàng)式
這個(gè)三元多項(xiàng)式可以有下面的化簡(jiǎn)
所以,任何一個(gè)m元多項(xiàng)式都可如此做:先分解出一個(gè)主變?cè)?#xff0c;隨后再分解出第二個(gè)變?cè)鹊取?/span>
什么那個(gè)式子可化為:
P=z((A,2),(B,1),(15,0))
其中
A=y((C,3),(D,2))
? ? ?C=x((1,10),(2,6))
? ? ?D=x((3,5))
B=y((E,4),(F,1))
? ? ?E=x((E,4),(F,1))
? ? ?F=x((2,0))
鏈表結(jié)構(gòu)為:
這里的exp為指數(shù)域,coef為系數(shù)域,hp指向其系數(shù)子表,tp指向同一層的下一個(gè)結(jié)點(diǎn)
代碼如下:
typedef struct MPNode{ELemTag tag; //區(qū)分原子結(jié)點(diǎn)和表結(jié)點(diǎn)int exp; //指數(shù)域union{float coef;//系數(shù)域struct MPNode *hp; //表結(jié)點(diǎn)的表頭指針};struct MPNode *tp; //相當(dāng)于線性鏈表的next,指向下一個(gè)元素結(jié)點(diǎn) }*MPList; //m元多項(xiàng)式廣義表類型 上面的多元式可有下面的存儲(chǔ)結(jié)構(gòu)示意圖:
分析如下:
在每一層上增設(shè)一個(gè)表頭結(jié)點(diǎn)并利用exp指示該層的變?cè)?#xff0c;可用一位數(shù)組存儲(chǔ)多項(xiàng)式中的所有變?cè)?#xff0c;故exp域存儲(chǔ)的是該變?cè)谝晃粩?shù)組中的下標(biāo)。
新人創(chuàng)作打卡挑戰(zhàn)賽發(fā)博客就能抽獎(jiǎng)!定制產(chǎn)品紅包拿不停!
總結(jié)
以上是生活随笔為你收集整理的5.6m元多项式的表示的全部?jī)?nèi)容,希望文章能夠幫你解決所遇到的問(wèn)題。
- 上一篇: Java高级语法笔记-自定义异常类
- 下一篇: 6.1树的定义和存储