| 网站首页 | 业界新闻 | 小组 | 威客 | 人才 | 下载频道 | 博客 | 代码贴 | 在线编程 | 编程论坛
欢迎加入我们,一同切磋技术
用户名:   
 
密 码:  
共有 1931 人关注过本帖
标题:多项式合并同类项问题
只看楼主 加入收藏
joker39
Rank: 1
等 级:新手上路
威 望:1
帖 子:78
专家分:0
注 册:2007-9-6
收藏
 问题点数:0 回复次数:13 
多项式合并同类项问题
这个函数编译通过 就是运行不了  我看不出是哪里有问题啊
pn * tongleixiang(pn * head)       //pn 是多项式的节点类型
{
     pn *p,*temp;
     head=sort(head);    //先把多项式从大到小排序  排序函数没问题
     p=head->next;
     while(p)
     {
             temp=p->next;
             if(p->e==temp->e)    //当前和下一个指数相同的话
             {
                  p->c+=temp->c;  //把下一个节点的系数加到当前节点的系数     
                  p->next=temp->next;  //把指针指向下一个的下一个
                  free(temp);
                  continue;   //继续从p开始和p->next比较
             }     
             p=p->next;
     }
     return head;
}
那位高手帮忙解答一下
搜索更多相关主题的帖子: 多项式 同类项 
2008-03-26 19:50
joker39
Rank: 1
等 级:新手上路
威 望:1
帖 子:78
专家分:0
注 册:2007-9-6
收藏
得分:0 
怎么没人啊    等了一天了
2008-03-27 15:53
joker39
Rank: 1
等 级:新手上路
威 望:1
帖 子:78
专家分:0
注 册:2007-9-6
收藏
得分:0 
if(p->e==temp->e) 调试时 这边提示程序产生一个访问段违例
2008-03-27 16:02
qfyzy
Rank: 2
等 级:论坛游民
威 望:1
帖 子:380
专家分:86
注 册:2008-2-17
收藏
得分:0 
temp=p->next
这个TEMP可能是NULL

当对C的经验增加时,它会显的很好用.----Dennis M Ritche如是说
2008-03-27 17:15
joker39
Rank: 1
等 级:新手上路
威 望:1
帖 子:78
专家分:0
注 册:2007-9-6
收藏
得分:0 
为什么?  我已经把p->next指向p->next->next;也就是p->next=temp->next;
2008-03-27 18:58
qfyzy
Rank: 2
等 级:论坛游民
威 望:1
帖 子:380
专家分:86
注 册:2008-2-17
收藏
得分:0 
你只是验证了P不是空的

当对C的经验增加时,它会显的很好用.----Dennis M Ritche如是说
2008-03-27 19:29
shy1201
Rank: 1
等 级:新手上路
帖 子:13
专家分:0
注 册:2008-3-18
收藏
得分:0 
加油啊
2008-03-27 19:30
joker39
Rank: 1
等 级:新手上路
威 望:1
帖 子:78
专家分:0
注 册:2007-9-6
收藏
得分:0 
请问我应该怎么修改代码呢 ?
2008-03-27 23:31
qfyzy
Rank: 2
等 级:论坛游民
威 望:1
帖 子:380
专家分:86
注 册:2008-2-17
收藏
得分:0 
最好能把程序贴上来,否则我没有办法编译.
pn * tongleixiang(pn * head)       //pn 是多项式的节点类型
{
     pn *p;
     p=(head=sort(head));    //先把多项式从大到小排序  排序函数没问题
     while(p->next)
     {
             if(p->e==(p->next)->e)    //当前和下一个指数相同的话
             {
                  (p->c)+=(p->next)->c;  //把下一个节点的系数加到当前节点的系数     
                  p->next=(p->next)->next;  //把指针指向下一个的下一个
                  free(p->next);
                  continue;   //继续从p开始和p->next比较
             }     
             p=p->next;
     }
     return head;
}

当对C的经验增加时,它会显的很好用.----Dennis M Ritche如是说
2008-03-28 10:32
joker39
Rank: 1
等 级:新手上路
威 望:1
帖 子:78
专家分:0
注 册:2007-9-6
收藏
得分: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(p->e==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);
    getch();
    return 0;
}


程序在turbo c++3.0可以  在devcpp就不行  怎么回事啊
2008-03-28 12:34
快速回复:多项式合并同类项问题
数据加载中...
 
   



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

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