C語言多項式加法

來源:互聯網
上載者:User

標籤:多項式   c語言   

#include <stdio.h>

#include <stdlib.h>

#define ERROR -1

typedef struct list{

double coef;

int expn;

struct list *next;

}polyn;


polyn* creatpolyn(polyn*p,int m)

{

p=(polyn*)malloc(sizeof(polyn));

p->next=NULL;

while(m--){

polyn *temp=(polyn*)malloc(sizeof(polyn));

scanf("%lf %d",&temp->coef,&temp->expn);

temp->next=p->next;

p->next=temp;

}

return p;

}


int cmp(int a,int b){

if(a>b) return 1;

else if(a==b) return 0;

else return -1;

}



void delfirst(polyn*p,polyn*q)

{

p->next=q->next;

}


void insfirst(polyn*p,polyn*q)

{

q->next=p->next;

p->next=q;

}


void append(polyn*p,polyn*q)

{

polyn *temp=p;

while(1){

temp=temp->next;

if(!temp->next){

temp->next=q;

break;

}

}

}


void addpolyn(polyn*pa,polyn*pb)

{int a,b;

double sum=0; 

polyn *ha=pa;

polyn *hb=pb;

polyn *qa=ha->next;

polyn *qb=hb->next;

while(qa&&qb){

a=qa->expn;

b=qb->expn;

switch(cmp(a,b)){

case -1:ha=qa;

qa=qa->next;

break;

case 0:sum=qa->coef+qb->coef;

  if(sum!=0.0){

  qa->coef=sum;

  ha=qa;

  }

  else{

  delfirst(ha,qa);

  free(qa);

  }

  delfirst(hb,qb);

  free(qb);

  qb=hb->next;

  qa=ha->next;

  break;

case 1:delfirst(hb,qb);

  insfirst(ha,qb);

  qb=hb->next;

  ha=ha->next;

  break;

}

  }

  if(!pb->next) append(pa,qb);

  free(hb);

}


int main (void){

int numberofpa,numberofpb;

polyn *pa=NULL,*pb=NULL,*p=NULL;

scanf("%d %d",&numberofpa,&numberofpb);

pa=creatpolyn(pa,numberofpa);

printf("鏈表A設定完畢\n");

p=pa->next;

while(p!=NULL){

printf("%.2f %d\n",p->coef,p->expn);

p=p->next;

}

pb=creatpolyn(pb,numberofpb);         

printf("鏈表B設定完畢\n"); 

addpolyn(pa,pb);

printf("加法完成\n");

while((pa->next)!=NULL){

pa=pa->next;

printf("%.2f %d\t",pa->coef,pa->expn);

}

return 0;                                                                                                                                                                                 

}

 指標傳遞也是值傳遞,在裡面對指標進行修改都要返回。

C語言多項式加法

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.