dfsd58686451 2016-07-17 15:03 采纳率: 0%
浏览 1203

各位大神帮忙看一下这段代码(是用c编的),为什么在codeblocks上不能运行

#include
#include
typedef struct Node
{
int coefficient;
int index;
struct Node *next;
}*DXS;
DXS creatlist(int n,DXS L)
{
int i;
DXS p,tmp;
L=(DXS)malloc(sizeof(DXS)+1);
scanf("%d%d",&(L->coefficient),&(L->index));
p=L;
for(i=0;i {
tmp=(DXS)malloc(sizeof(DXS)+1);
p->next=tmp;
p=p->next;
scanf("%d%d",&(p->coefficient),&(p->index));
}
p->next=NULL;
return L;
}
DXS addlist(DXS L1,DXS L2)
{
int ch=0;
DXS p1=L1,p2=L2,pd,tmp;
while(p1->index>=p2->index)
{
if(p1->index>p2->index)
{
tmp=L2;
L2=p1;
p1=L2->next;
L2->next=tmp;
}
else
{
L2->coefficient+=p1->coefficient;
p1=p1->next;
}

}
pd=p2;
while(p1!=NULL)
{
   while(p2!=NULL)
   {
       if(p2->index<p1->index)
       {
           tmp=(DXS)malloc(sizeof(DXS)+1);
           tmp->coefficient=p1->coefficient;
           tmp->index=p1->index;
           tmp->next=p2;
           pd->next=tmp;
           pd=tmp;
           break;
       }
       else if(p2->index==p1->index)
       {
           p2->coefficient+=p1->coefficient;
           break;
       }
       p2=p2->next;
       if(ch==0)
       ch++;
       else pd=pd->next;
   }
   if(p2==NULL)
   {
       tmp=(DXS)malloc(sizeof(DXS)+1);
       tmp->coefficient=p1->coefficient;
       tmp->index=p1->index;
       pd->next=tmp;
       pd=tmp;
       pd->next=NULL;
   }
   p1=p1->next;
}
return L2;

}
DXS copylist(DXS L1)
{
DXS p1=L1,p2,L2,tmp;
tmp=(DXS)malloc(sizeof(DXS)+1);
p2=L2=tmp;
p2->coefficient=p1->coefficient;
p2->index=p1->index;
p1=p1->next;
while(p1!=NULL)
{
tmp=(DXS)malloc(sizeof(DXS)+1);
p2->next=tmp;
p2=tmp;
p2->coefficient=p1->coefficient;
p2->index=p1->index;
p1=p1->next;
}
p2->next=NULL;
return L2;
}
DXS mullist(DXS L1,DXS L2)
{
DXS L3,p1=L1,p2=L2,p3,tmp,L4;
int ch=0,cp=0;
L3=(DXS)malloc(sizeof(DXS)+1);
p3=L3;
p3->coefficient=p1->coefficient*p2->coefficient;
p3->index=p1->index+p2->index;
while(p1!=NULL)
{
while(p2!=NULL)
{
if(cp==0)
{
cp++;
p2=p2->next;
continue;
}
tmp=(DXS)malloc(sizeof(DXS)+1);
p3->next=tmp;
p3=tmp;
p3->coefficient=p1->coefficient*p2->coefficient;
p3->index=p1->index+p2->index;
p2=p2->next;
}
p3->next=NULL;
if(ch==0)
{
L4=copylist(L3);
ch++;
}
else L4=addlist(L3,L4);
p1=p1->next;
p2=L2;
L3->coefficient=0;
p3=L3;
}
return L4;
}
void printlist(DXS L)
{
DXS tmp;
while(L!=NULL)
{
tmp=L;
printf("%d %d ",L->coefficient,L->index);
L=L->next;

}
printf("\b\n");

}
int main()
{
int n,m;
DXS l1=NULL,l2=NULL,l3,l4;
scanf("%d",&n);
l1=creatlist(n,l1);
scanf("%d",&m);
l2=creatlist(m,l2);
l4=mullist(l1,l2);
l3=addlist(l1,l2);
printlist(l4);
printlist(l3);
return 0;
}

  • 写回答

2条回答 默认 最新

  • dfsd58686451 2016-07-17 15:04
    关注

    补充一下,这道题是用来计算多项式加法和乘法用链表实现的

    评论

报告相同问题?

悬赏问题

  • ¥15 对于相关问题的求解与代码
  • ¥15 ubuntu子系统密码忘记
  • ¥15 信号傅里叶变换在matlab上遇到的小问题请求帮助
  • ¥15 保护模式-系统加载-段寄存器
  • ¥15 电脑桌面设定一个区域禁止鼠标操作
  • ¥15 求NPF226060磁芯的详细资料
  • ¥15 使用R语言marginaleffects包进行边际效应图绘制
  • ¥20 usb设备兼容性问题
  • ¥15 错误(10048): “调用exui内部功能”库命令的参数“参数4”不能接受空数据。怎么解决啊
  • ¥15 安装svn网络有问题怎么办