| 网站首页 | 业界新闻 | 小组 | 威客 | 人才 | 下载频道 | 博客 | 代码贴 | 在线编程 | 编程论坛
欢迎加入我们,一同切磋技术
用户名:   
 
密 码:  
共有 1931 人关注过本帖
标题:多项式合并同类项问题
只看楼主 加入收藏
sunkaidong
Rank: 4
来 自:南京师范大学
等 级:贵宾
威 望:12
帖 子:4496
专家分:141
注 册:2006-12-28
收藏
得分:0 
可以考虑c++里面的vector加pair做..也许没那么烦...

学习需要安静。。海盗要重新来过。。
2008-03-28 12:40
sunkaidong
Rank: 4
来 自:南京师范大学
等 级:贵宾
威 望:12
帖 子:4496
专家分:141
注 册:2006-12-28
收藏
得分:0 
#include <stdio.h>
#include <malloc.h>
typedef struct danxiang
{
        int c,e;
        struct danxiang * next;
}pn;
pn * create()
{
     pn * head, * p;
     int n,i=1;
     printf("输入多项式的个数n\n");
     printf("n= ");
     scanf("%d",&n);
     
     head=p=(pn*)malloc(sizeof(pn));
     while(n)
     {
             p->next=(pn*)malloc(sizeof(pn));
             p=p->next;
             printf("输入第%d单项式的系数和指数,以空格分开\n",i);
             scanf("%d %d",&p->c,&p->e);
             n--;
             i++;
     }
     p->next=NULL;
     return head;
}

pn * tongleixiang(pn * head)
{
     pn *p,*temp;
     p=head->next;
     while(p)
     {

             temp=p->next;
             if(temp!=NULL&&p->e==temp->e)//这里如果不判断temp是不是为空,当用到temp->e就会引发错误
             {
                  p->c+=temp->c;
                  p->next=temp->next;
                  free(temp);
             }
              else p=p->next;
     }
     return head;
}
void print(pn * head)
{
     pn * p=head->next;
     printf("F(x) = ");
     while(p)
     {
            
             if(p->c==1)
             {
                  if(p->e==0)
                  printf("%d",p->c);
                  else if(p->e==1)
                        printf("X");
                        else printf("X^%d",p->e);
             }
             else
             {
                  if(p->e==0)
                  printf("%d",p->c);
                  else if(p->e==1)
                       printf("%dX",p->c);
                       else printf("%dX^%d",p->c,p->e);
             }     
             p=p->next;
             if(p) printf(" + ");
     }
}
void freememory(pn * head)
{
     pn * q=head;
     while(q)
     {
     head=head->next;
     free(q);
     q=head;
     }
}
int main()
{
    pn *p,*q;
    p=create();
    q=tongleixiang(p);
    print(q);
    freememory(p);
    getchar();
    return 0;
}

[[it] 本帖最后由 sunkaidong 于 2008-3-28 13:03 编辑 [/it]]

学习需要安静。。海盗要重新来过。。
2008-03-28 12:53
joker39
Rank: 1
等 级:新手上路
威 望:1
帖 子:78
专家分:0
注 册:2007-9-6
收藏
得分:0 
多谢高手指教 终于明白了   可是这种错误在turbo c++3.0下为什么能够运行   在它下面运行就正确   是不是tc在内存管理上比较不同。?
2008-03-28 13:59
sunkaidong
Rank: 4
来 自:南京师范大学
等 级:贵宾
威 望:12
帖 子:4496
专家分:141
注 册:2006-12-28
收藏
得分:0 
我不用tc一直都用vc++6.0...你提的问题我不是很清楚..设计词法和语法分析..

学习需要安静。。海盗要重新来过。。
2008-03-28 16:43
快速回复:多项式合并同类项问题
数据加载中...
 
   



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

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