C 一元多項式相加

2021-08-28 13:06:38 字數 2160 閱讀 8284

問題描述

一元多項式每一項由係數pi及x的指數i組成。若多項式按照公升冪排列,則它由n+1個係數唯一確定,因此可以用乙個線性表表示,其指數i隱藏在係數pi的序號內。分別兩個多項式a(x)、b(x)係數、指數所構成的表。輸出為兩多項式和c(x)所構成的鍊錶。

設計思路

將b(x)加到a(x)後,形成c(x)。帶有頭結點的線性鍊錶表示多項式a(x)、b(x),ha、hb分別指向a(x)、b(x)的頭指標,p、q分別指向多項式第一項。比較p、q結點的指數項若p結點指數項小q結點指數項,則p所指結點為c(x)一項,p後移乙個結點;若p指數項大於q指數項,則q所指結點為c(x)一項。若相等,則係數相加,為零則刪去,否則修改係數並**。所用變數包括線性煉表頭指標ha、hb,指標p、q。算碼描述:

add(ha,hb)

p<-next(ha);q<-next(hb)

pre<-ha;hc<_ha   //pre指向p的前驅,hc為c(x)頭指標

while(p!=nil)and (q!=nil) do

case

exp(p)

exp(p)=exp(q):

else

p<-next(pre);u<-q;q<-next(q);ret(u)}

exp(p)>exp(q):

end(case)

end(while)

if(q!=nil) then next (pre)<-q

ret(hb)         //釋放多項式b(x)頭結點//

return

測試用例及結果說明

測試用例:a(x)=3x+5x^12+6x^64; b(x)=4x+4x^10+7x^128

測試結果:c(x)=7x+4x^10+5x^12+6x^64+7x^128

設計及測試過程

第一步:提出問題;

第二步:問題轉換;

第三步:演算法構思;

第四步:偽碼描述;

第五步:**編寫;

第六步:**測試;

第七步:**修正;

評價和改進

演算法優點:鏈式儲存形式節約了大量空間。

演算法缺點:演算法實質是將b(x)加到a(x)之後,運算結束後丟失了初始資料。

心得體會

軟體技術的學習需要實踐的積累,在實際的編寫之中可以領悟到軟體工程師的思維模式和工作過程,有利於工程思想的培養。

#includeusing namespace std;

struct node

*ha,*hb;

void print(struct node *head)

cout}int main()

tail->next=null;

cout<<"請輸入第二個多項式的係數和次數(結束輸入請輸入『0』)"<>coef;

if(coef==0)

break;

cout<<"x";

cin>>exp;

cout<<"+";

newnode=new node;

newnode->coef=coef;

newnode->exp=exp;

tail->next=newnode;

tail=newnode;

} tail->next=null;

print(ha);

cout<<"+";

print(hb);

cout<<"=";

float x;

struct node *p=ha->next;

struct node *q=hb->next;

struct node *pre=ha;

struct node *hc=ha;

struct node *u;

while(p!=null&&q!=null)

else if(p->exp==q->exp)

else

pre->next=p->next;

p=pre->next;

u=q;

q=q->next;

} else if(p->exp>q->exp)

}if(q!=null)

pre->next=q;

print(ha);

cout

return 0;

}

c語言一元多項式相加

用單鏈表實現一元多項式相加 演算法的核心思想是,先把輸入的多項式,按次數從小到大排序,然後用temp1,temp2同時分別遍歷兩個多項式,當temp1所指結點的次數小於temp2所指結點,取temp1所指結點作為新多項式的新項,同時temp1前進乙個節點,temp2不動 當temp1所指結點的次數大...

2 一元多項式相加

成績 10開啟時間 2014年10月19日 sunday 00 00 折扣0.8 折扣時間 2014年11月2日 sunday 23 55 允許遲交 否關閉時間 2014年11月9日 sunday 23 55 編寫一元多項式加法運算程式。要求用線性鍊錶儲存一元多項式 參照課本 該程式有以下幾個功能 ...

一元多項式的相加

編寫一元多項式加法運算程式。要求用線性鍊錶儲存一元多項式 參照課本 該程式有以下幾個功能 1.多項式求和 輸入 輸入三個多項式,建立三個多項式鍊錶pa pb pc createpolyn polynomial p,int m 輸出 顯示三個輸入多項式pa pb pc 和多項式 pa pb 多項式 p...