qq_34360929 2016-06-05 10:02 采纳率: 0%
浏览 1257

数据结构的一元稀疏多项式代码,在插入过程中的循环,没转过弯来,望有大神提点!

void Insert(Polyn p,Polyn head){

if(p->coef==0)

free(p); //若p的系数为0则释放结点
else
{

Polyn q1,q2;
q1=head;
q2=head->next;

while(q2&& p->expn > q2->expn)

        {                         //查找p的插入位置
           q1=q2;               //确定输出的多项式为升幂排列
           q2=q2->next; 
        }  
     if(q2&& p->expn == q2->expn)  
        {                         //若输入的指数相同,则合并同类项
           q2->coef += p->coef; 
           free(p);  
           if(q2->coef==0)     //q2项系数为0时,直接插入
              {                     
                q1->next=q2->next; 
                free(q2); 
              } 
        }  
    else  
        {                       //指数为新时将结点插入
           p->next=q2; 
           q1->next=p; 
        } 
 } 

}

  • 写回答

1条回答 默认 最新

  • 小灸舞 2016-06-05 12:02
    关注

    不知道你是哪里转不过弯?注释的挺清楚的啊.
    1.首先while循环找到待插入的位置
    2.判断找到的位置的expn和p的expn是不是一样的,一样的话系数相加就好(如果相加以后变成0了就删除掉这个项)
    3.原来的多项式没有和待插入的p的expn一样的,说明待插入的p的expn是最大的,直接在多项式尾部插入p

    评论

报告相同问题?

悬赏问题

  • ¥15 程序不包含适用于入口点的静态Main方法
  • ¥15 素材场景中光线烘焙后灯光失效
  • ¥15 请教一下各位,为什么我这个没有实现模拟点击
  • ¥15 执行 virtuoso 命令后,界面没有,cadence 启动不起来
  • ¥50 comfyui下连接animatediff节点生成视频质量非常差的原因
  • ¥20 有关区间dp的问题求解
  • ¥15 多电路系统共用电源的串扰问题
  • ¥15 slam rangenet++配置
  • ¥15 有没有研究水声通信方面的帮我改俩matlab代码
  • ¥15 ubuntu子系统密码忘记