實驗一?

Tags: ,

資料結構:實驗一 實現一元多項式加法運算。

1.問題描述:利用帶頭結點的連結串列結構,開發一個一元稀疏多項式加法運算器。建立一元多項式並按照指數升序排列輸出多項式,將一元多項式輸入並存儲在記憶體中,能夠完成兩個多項式的加減運算並輸出結果。

2.基本要求:要求程式具備以下操作介面:(1)CreatPolyn(多項式建立函式)(2)PrintPolyn(多項式列印函式)(3)AddPolyn(多項式相加函式)

3.程式執行的步驟包括:(1)輸入多項式的項數及係數,建立多項式;(2)實現多項式的相加;(3)輸出相加結果

4.測試資料 (1)(2x+5x^8-3x^11)+(7-5x^8+11x^9) (2)(3x+4x^2-2x^9)+(-6x+5x^2+7x^15)

實驗一 一元多項式加法運算

方法/步驟

一、問題描述:

利用帶頭結點的連結串列結構,開發一個一元稀疏多項式加法運算器。建立一元多項式並按照指數升序排列輸出多項式,將一元多項式輸入並存儲在記憶體中,能夠完成兩個多項式的加減運算並輸出結果

實驗一 一元多項式加法運算

二、程式

#include

#include

#define LEN sizeof(struct PolyNode)

typedef struct PolyNode//

{

float coef;//

int expn;//

struct PolyNode *next;//

}PolyNode,*polynomial;//

int n;//

polynomial CreatPolyn()//

{

polynomial head,p,q;//

p=q=(polynomial)malloc(LEN);//

scanf("%f,%d",&p->coef,&p->expn);//

head=NULL;//

while(p->coef!=0)

{

n=n+1;

if(n==1)

{

head=p;

}else

{

q->next=p;

q=p;

p=(polynomial)malloc(LEN);

scanf("%f,%d",&p->coef,&p->expn);//

}

}

q->next=NULL;

return(head);

}

void TopPolyn(polynomial L)

{

polynomial a,b;

float temp_co;

int temp_ex;

a=L;

for(a;a!=NULL;a=a->next){

b=L;

for(b;b->next!=NULL;b=b->next){

if(b->expn>b->next->expn){

temp_co=b->coef;

temp_ex=b->expn;

b->coef=b->next->coef;

b->expn=b->next->expn;

b->next->coef=temp_co;

b->next->expn=temp_ex;

}

}

}

return;

}

void PrintPolyn(polynomial head){

polynomial p;

printf("該多項式按升序輸出為:");

p=head;

if(head!=NULL)

do

{

printf("%.2fx^%d ",p->coef,p->expn);

p=p->next;

}while(p!=NULL);

}

polynomial AddPolyn(polynomial P,polynomial Q,polynomial R){

// polynomial P,Q;

P=CreatPolyn();

Q=P->next;

while(Q!=NULL){

if(P->expn==P->next->expn){

P->coef=P->next->coef+P->coef;

P->next=P->next->next;

free(Q);

}else

{

P=P->next;

Q=Q->next;

}

R=P;

}

return (R);

}

void main(){

polynomial A,B,Ans;

printf("請輸入多項式A的係數和指數,輸入格式為“coefficient,expn”,中間以逗號隔開\n");

A=CreatPolyn();

// printf("多項式A按升序輸出為:");

TopPolyn(A);

PrintPolyn(A);

printf("\n\n請輸入多項式B的係數和指數,輸入格式為“coefficient,expn”,中間以逗號隔開\n");

B=CreatPolyn();

// printf("多項式B按升序輸出為:");

TopPolyn(B);

PrintPolyn(B);

printf("\n兩個多項式相加得出的結果為:");

//Ans=NULL;

AddPolyn(A,B,Ans);

TopPolyn(Ans);

PrintPolyn(Ans);

}

實驗一 一元多項式加法運算

實驗一 一元多項式加法運算

實驗一 一元多項式加法運算

實驗一 一元多項式加法運算

三、測試

多項式:1:(2x+5x^8-3x^11)+(7-5x^8+11x^9)

多項式2:(3x+4x^2-2x^9)+(-6x+5x^2+7x^15)

實驗一 一元多項式加法運算

實驗一 一元多項式加法運算

注意事項

部分資料來自網路

,
相關問題答案