| 网站首页 | 业界新闻 | 小组 | 威客 | 人才 | 下载频道 | 博客 | 代码贴 | 在线编程 | 编程论坛
欢迎加入我们,一同切磋技术
用户名:   
 
密 码:  
共有 786 人关注过本帖
标题:c语言编写的程序出现停止运行的问题
只看楼主 加入收藏
木头人bh
Rank: 1
等 级:新手上路
帖 子:1
专家分:0
注 册:2014-10-9
结帖率:0
收藏
已结贴  问题点数:10 回复次数:5 
c语言编写的程序出现停止运行的问题
我编写的c程序是一元多项式相加的问题,在运行的时候出现停止程序运行的情况,在de-bug之后发现在下边的AddLink部分出现问题,如果只进行第一步最开始加的那一块没问题,加上while之后的那部分问题就出现了。
# include<stdio.h>
# include<stdlib.h>
struct node{
  int Exp;
  int Coef;
  struct node *link;
} ;

void SetupLink(struct node **H, int e, int c){
     struct node *P, *Q, *X;
     P = (struct node *)malloc(sizeof(struct node));
     P->Exp = e;
     P->Coef = c;
     if (*H != NULL)
     (*H)->link = P;
     else
     *H = P;
}

void AddLink(struct node **CH, struct node **P, struct node **Q){  //应该是这部分出问题了
     struct node *d=0;
     int e,c;
     if ((*P)->Exp == (*Q)->Exp){
          e = (*P)->Exp;
          c = (*P)->Coef+(*Q)->Coef;
          SetupLink(&d,e,c);
          *P = (*P)->link;
          *Q = (*Q)->link;
          *CH = d;        
                   }
     else if ((*P)->Exp >(*Q)->Exp){
          e = (*Q)->Exp;
          c = (*Q)->Coef;
          SetupLink(&d,e,c);  
          *Q = (*Q)->link;
          *CH = d;        
          }
     else {
          e = (*P)->Exp;
          c = (*P)->Coef;
          SetupLink(&d,e,c);  
          *P = (*P)->link;
          *CH = d;
          }
     while (((*P)->link != NULL)&&((*Q)->link != NULL ) ){
     if ((*P)->Exp == (*Q)->Exp){
          e = (*P)->Exp;
          c = (*P)->Coef+(*Q)->Coef;
          SetupLink(&d,e,c);
          *P = (*P)->link;
          *Q = (*Q)->link;
          d = d->link;
                   }
     else if ((*P)->Exp >(*Q)->Exp){
          e = (*Q)->Exp;
          c = (*Q)->Coef;
          SetupLink(&d,e,c);  
          *Q = (*Q)->link;
          d = d->link;        
          }
     else {
          e = (*P)->Exp;
          c = (*P)->Coef;
          SetupLink(&d,e,c);  
          *P = (*P)->link;
          d = d->link;
          }           
           }
     if ((*P)!=NULL){
          while ((*P)!=NULL){
          e = (*P)->Exp;
          c = (*P)->Coef;
          SetupLink(&d,e,c);  
          *P = (*P)->link;
          d = d->link;               
                }
                     }
     else{
          while ((*Q)!=NULL){
          e = (*Q)->Exp;
          c = (*Q)->Coef;
          SetupLink(&d,e,c);  
          *Q = (*Q)->link;
          d = d->link;               
                }
                     }  
     }
搜索更多相关主题的帖子: include 多项式 c语言 c程序 
2014-10-09 19:30
wp231957
Rank: 20Rank: 20Rank: 20Rank: 20Rank: 20
来 自:神界
等 级:贵宾
威 望:423
帖 子:13688
专家分:53332
注 册:2012-10-18
收藏
得分:2 
没有发现你的main函数

DO IT YOURSELF !
2014-10-10 10:05
BuilderZ
Rank: 3Rank: 3
等 级:论坛游侠
威 望:1
帖 子:82
专家分:123
注 册:2014-9-22
收藏
得分:2 
笑死了,哈哈,再多的代码你不执行也是废的
2014-10-11 02:03
l3456
Rank: 3Rank: 3
等 级:论坛游侠
威 望:1
帖 子:80
专家分:133
注 册:2014-4-16
收藏
得分:2 
main函数你吃了吗

走向光明的菜鸟学生,励志成为新一代程序猿
2014-10-11 09:54
sidooh
Rank: 4
等 级:业余侠客
帖 子:121
专家分:265
注 册:2009-6-26
收藏
得分:2 
debug进入AddLink用步进来看看哪一行出的问题. 这种程序崩溃的话一般是访问无效地址: 变量没有分配内存就访问, 或是变量释放内存后访问.
*P = (*P)->link;
          *Q = (*Q)->link;
          d = d->link;
这几个地方可能会出现这个问题
2014-10-11 12:35
ditg
Rank: 10Rank: 10Rank: 10
等 级:贵宾
威 望:16
帖 子:852
专家分:1937
注 册:2014-4-10
收藏
得分:2 
花括号的位置很诡异呀

梦想拥有一台龙芯3A-4000
2014-10-11 13:48
快速回复:c语言编写的程序出现停止运行的问题
数据加载中...
 
   



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

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