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 #MATLAB仿真#车辆换道路径规划
  • ¥15 java 操作 elasticsearch 8.1 实现 索引的重建
  • ¥15 数据可视化Python
  • ¥15 要给毕业设计添加扫码登录的功能!!有偿
  • ¥15 kafka 分区副本增加会导致消息丢失或者不可用吗?
  • ¥15 微信公众号自制会员卡没有收款渠道啊
  • ¥100 Jenkins自动化部署—悬赏100元
  • ¥15 关于#python#的问题:求帮写python代码
  • ¥20 MATLAB画图图形出现上下震荡的线条
  • ¥15 关于#windows#的问题:怎么用WIN 11系统的电脑 克隆WIN NT3.51-4.0系统的硬盘