| 网站首页 | 业界新闻 | 小组 | 威客 | 人才 | 下载频道 | 博客 | 代码贴 | 在线编程 | 编程论坛
欢迎加入我们,一同切磋技术
用户名:   
 
密 码:  
共有 322 人关注过本帖
标题:求c多项式相加程序 数据从外部文件读取 牛人赶紧的!!!
取消只看楼主 加入收藏
zq_16
Rank: 1
等 级:新手上路
帖 子:3
专家分:3
注 册:2010-12-3
结帖率:100%
收藏
已结贴  问题点数:20 回复次数:0 
求c多项式相加程序 数据从外部文件读取 牛人赶紧的!!!
有代码如下#include<stdio.h>
#include<malloc.h>
typedef struct linklist
{
    int coef;//系数
    int exp; //指数
    struct linklist *next;
}nodelink;
nodelink *create(nodelink *a)//创建单链表
{
    nodelink *head,*s,*t;
    int c=a->coef,e=a->exp;
    head=(nodelink *)malloc(sizeof(nodelink));//哨兵头结点
    head->next=NULL;
    t=head;//始终指向单链表的尾部
    printf("请输入c和e的值,当系数e等于-1为结束条件:\n");
    //scanf("%d%d",&c,&e);
    while(e!=-1)
    {
        s=(nodelink *)malloc(sizeof(nodelink));
        s->coef=c;
        s->exp=e;
        s->next=NULL;
        t->next=s;
        t=s;
        printf("请继续输入c和e的值,当系数e等于-1为结束条件:\n");
         //scanf("%d%d",&c,&e);
    }
    return head;
}
void printhead(nodelink *head)//输出连表数据
{   int pcount=1; //结点计数器
    nodelink *phead;
    phead=head->next; //指向第一个元素结点
    while(phead!=NULL)
    {
        printf("第%d个结点的系数和指数分别为:",pcount);
        printf("%2d%4d\n",phead->coef,phead->exp);
        phead=phead->next;
        pcount++;
    }
    printf("\n");
}
nodelink *ADD(nodelink *heada,nodelink *headb)//实现多项式相加
{

    nodelink *p,*q,*prea,*preb,*temp;
    int sum;
    p=heada->next;//分别使p和q指向第一个元素结点
    q=headb->next;
    prea=heada;
    free(headb);//释放headb链表的头结点
    while(p!=NULL&&q!=NULL)
    {
        if(p->exp<q->exp)
        {
            prea=p;
            p=p->next;
        }
        else if(p->exp==q->exp)
        {
              sum=p->coef+q->coef;
          if(sum!=0)
          {
             p->coef=sum;
             preb=q;
             prea=p;
             p=p->next;
             q=q->next;
             free(preb);
          }
         else//如果和为零
         {
            temp=p;
            p=p->next;
            prea->next=p;
            free(temp);
            preb=q;
            q=q->next;
            free(preb);
         }
        }
        else //若p->exp大于q->exp
        {
            preb=q;
            q=q->next;
            preb->next=p;
            prea->next=preb;
            prea=prea->next;
        }
    }
    if(q!=NULL)
    prea->next=q;
    return heada;
}
void main()
{   int i,j,m,n;
    nodelink *heada,*headb,*headc;
    FILE *fp;
    fp=fopen("11.txt","r");
    fscanf(fp,"%d,%d",&i,&j);heada->coef=&i;heada->exp=&j;
    fscanf(fp,"%d,%d",&m,&n);headb->coef=&m;headb->exp=&n;
    heada=create(heada);
    printhead(heada);
    headb=create(headb);
    printhead(headb);
    headc=ADD(heada,headb);
    printf("相加后的的链表为:\n");
    printhead(headc);
}

我表示达不到目的   谁能帮忙改改?

[ 本帖最后由 zq_16 于 2011-3-26 19:16 编辑 ]
搜索更多相关主题的帖子: 多项式 include create 
2011-03-26 18:23
快速回复:求c多项式相加程序 数据从外部文件读取 牛人赶紧的!!!
数据加载中...
 
   



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

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