C語言實現一元多項式加法運算

2021-10-24 13:46:25 字數 2744 閱讀 1706

說到一元多項式相加,相信很多小夥伴都不會陌生,甚至 「合併同類項」 已經要脫口而出了(因為上節課本人就是這樣的哈哈~)

回到正題,一元多項式的加法運算,大概是這樣的:

知道怎麼操作了之後就來看看如何儲存一元多項式叭:

很明顯為了方便操作,而且每一項都含有 係數(coefficient)、指數 (index),為了避免s形一元多項式帶來的空間浪費,我們採用鏈式結構儲存一元多項式,本題中採用普通的單鏈表進行儲存(不需要方便訪問頭尾結點時可以不用迴圈鍊錶)

話不多說,先整兩個一元多項式看看↓

老規矩,資料型別和結構體定義先給出來

pnode、linklist分別表示結點和鍊錶,datatype即int,coe為係數,ind為指數

//重定義型別和宣告函式

typedef

struct node* pnode;

typedef

struct node* linklist;

typedef

int datatype;

struct node

;pnode add_polya

(linklist head1, linklist head2)

;

構建一元多項式:

ps:當接收到的係數和指數同時為0時停止輸入,即乙個多項式的結束

linklist setnulllist_link()

void

createlist_tail

(struct node* head)

return

;}

pnode add_polya

(linklist head1, linklist head2)

while

(p !=

null

)//兩個項指數相等時

if(p->ind == q->ind)

else

}//多項式1的項的指數大於多項式2的項時

else

if(p->ind > q->ind)

//多項式2的項指數大小在多項式1的項與下一項中間時

else

if(q->ind > p->ind && q->ind <

(p->next)

->ind)

else

if(q->ind > p->ind && q->ind >=

(p->next)

->ind)

}return head1;

}

需要注意的就是兩個項的指數大小問題(注意看上方的注釋嗷~)

最後來看整體**與執行結果:

//鏈式儲存實現多項式加法

#include

#include

//重定義型別和宣告函式

typedef

struct node* pnode;

typedef

struct node* linklist;

typedef

int datatype;

struct node

;pnode add_polya

(linklist head1, linklist head2)

;linklist setnulllist_link()

void

createlist_tail

(struct node* head)

return;}

void

print

(linklist head)

else

p = p->next;

}return;}

void

destorylist_link

(linklist head)

free

(pre)

;return;}

intmain()

pnode add_polya

(linklist head1, linklist head2)

while

(p !=

null

)//兩項和為0時

if(p->ind == q->ind)

else

}//多項式1的項的指數大於多項式2的項時

else

if(p->ind > q->ind)

//多項式2的項指數大小在多項式1的項與下一項中間時

else

if(q->ind > p->ind && q->ind <

(p->next)

->ind)

else

if(q->ind > p->ind && q->ind >=

(p->next)

->ind)

}return head1;

}

執行結果:

當然可能有小夥伴覺得這樣不好看,這**是乙個真正的一元多項式啊!

沒辦法,為了過平台上的測試,嗚嗚~

大家如果想要美觀的話可以自行修改**中的 print 函式嗷,我就不改啦

最後說一下,要是copy本篇**來過實驗的話,記得檢視print 函式哈,不然有可能會出現格式錯誤的問題。

一元多項式的乘法與加法運算的C語言實現

用結構體不用說了,現在只寫了陣列,以後把鍊錶補上。include typedef struct shu shu shu zu1 100 zu2 100 chen 100 jia 100 void shuru1 int n 輸入上面一行的多項式 void shuru2 int n 輸入下面一行的多項式...

C語言實現 一元多項式運算器

程式簡介 功能 對多項式求值,求導,兩多項式相加,相減,相乘等運算 include include includetypedef struct nodetypenodetype nodetype creatlist 建立乙個人鍊錶,用來存放乙個多項式,返回乙個頭指標 void printlist n...

一元多項式加法運算的實現 swustoj

一元多項式加法運算的實現 10000 ms 10000 kb 2093 5095 程式設計實現一元多項式的加法運算。要求用鍊錶實現 輸入第乙個一元多項式a 第二個一元多項式b。以 0,0 作為輸入結束。輸出多項式a和多項式b的和。樣例輸入5,3 7,8 9,15 0,0 2,0 6,3 7,8 0,...