| 网站首页 | 业界新闻 | 小组 | 威客 | 人才 | 下载频道 | 博客 | 代码贴 | 在线编程 | 编程论坛
欢迎加入我们,一同切磋技术
用户名:   
 
密 码:  
共有 1007 人关注过本帖
标题:求C语言一元多项式相加,用链表完成
只看楼主 加入收藏
荒野奇侠
Rank: 1
等 级:新手上路
帖 子:5
专家分:0
注 册:2008-9-1
结帖率:0
收藏
 问题点数:0 回复次数:1 
求C语言一元多项式相加,用链表完成
#include<stdio.h>
#include<malloc.h>


/*多项式数据类型的定义*/
typedef struct poly
{
 float coef;
 int   exp;
 struct poly *next;
}polytype;


/*创建链表*/
polytype * create()
{
 polytype *h,*r,*s;
 float c;
 int   e;
 h=(polytype *)malloc(sizeof(polytype));         //申请表头结点空间
 r=h;
 printf("coef:");
 scanf("%f",&c);
 printf("exp: ");
 scanf("%d",&e);
 while(c!=0)
 {
  s=(polytype *)malloc(sizeof(polytype));
  s->coef=c;
  s->exp=e;
  r->next=s;
  r=s;
  printf("coef:");
  scanf("%f",&c);
  printf("exp: ");
  scanf("%d",&e);
 }
 r->next=NULL;
 return(h);
}


/*多项式相加函数*/
void polyadd(polytype *pa, polytype *pb)
{
 polytype *p,*q,*pre,*temp;
 float sum;
 p=pa->next;
 q=pb->next;
 pre=pa;
 while(p!=NULL&&q!=NULL)
 {
  if(p->exp<q->exp)
  {
   //pre->next=p;
   //pre=pre->next;
   //p=p->next;
   pre=p;
   p=p->next;
  }
  else if(p->exp==q->exp)
  {
   sum=p->coef+q->coef;
   if(sum!=0)
   {
    /*p->coef=sum;
    pre->next=p;
    pre=pre->next;
    p=p->next;
    temp=q;
    q=q->next;
    free(temp);*/
    p->coef=sum;
    pre=p;
   }
   else
   {
    /*temp=p->next;
    free(p);
    p=temp;
    temp=q->next;
    free(q);
    q=temp;*/
    pre->next=p->next;
    free(p);
   }
   p=pre->next;
   temp=q;
   q=q->next;
  }
  else
  {
   /*pre->next=q;
   pre=pre->next;
   q=q->next;*/
   temp=q->next;
   q->next=p;
   pre->next=q;
   pre=q;
   q=temp;
  }
 }
 if(/*p*/q!=NULL)
 pre->next=q;//p;
 /*else
 pre->next=q; */
 free(pb);
}


/*输出函数*/
void print(polytype * p)
{                                                                                                      
    while(p->next!=NULL)
    {   
        p=p->next;
        printf("     %g*x^%d",p->coef,p->exp);   
           
    }
}   


/*主函数*/
main()
{
 polytype * pa,* pb;
 printf("Welcome to use!\n");
 printf("\nPlease input the pa include coef && exp:\n");
 pa=create();
 print(pa);
 printf("\nPlease input the pb include coef && exp:\n");
 pb=create();
 print(pb);
    printf("\nSum of the poly is:\n");
    polyadd(pa,pb);
    print(pa);
    printf("\n");
}
请求修改
搜索更多相关主题的帖子: 链表 多项式 C语言 相加 
2008-09-04 14:08
StarWing83
Rank: 8Rank: 8
来 自:仙女座大星云
等 级:贵宾
威 望:19
帖 子:3951
专家分:748
注 册:2007-11-16
收藏
得分:0 
一定要用链表来完成么?

专心编程………
飞燕算法初级群:3996098
我的Blog
2008-09-04 14:59
快速回复:求C语言一元多项式相加,用链表完成
数据加载中...
 
   



关于我们 | 广告合作 | 编程中国 | 清除Cookies | TOP | 手机版

编程中国 版权所有,并保留所有权利。
Powered by Discuz, Processed in 0.017864 second(s), 7 queries.
Copyright©2004-2024, BCCN.NET, All Rights Reserved