c语言编写的程序停止运行程序,c语言编写的程序出现停止运行的问题

已结贴√

问题点数:10 回复次数:5

ca56232b3bbedf9a539d07f37fffb99a.gif

3144d8b7615c79d9f638db40d5689d26.gif

a218af6549b45ee526caf607ebff1358.gif

0f8df0e29816ae721419de940fb833d1.gif

c语言编写的程序出现停止运行的问题

我编写的c程序是一元多项式相加的问题,在运行的时候出现停止程序运行的情况,在de-bug之后发现在下边的AddLink部分出现问题,如果只进行第一步最开始加的那一块没问题,加上while之后的那部分问题就出现了。

# include

# include

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;

}

}

}

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值