线性表应用举例——一元多项式相加问题
来源:互联网 发布:洪拳小子知乎 编辑:程序博客网 时间:2024/04/29 00:00
多项式相加算法的思路是,不产生新的结点而利用原有结点空间,设两个指针变量p和q分别指向A和B两个多项式单链表的第一个结点,依次比较两指针所指结点的指数项。若指数相等系数相加,和不为零修改*p的系数项并删除*q,和为零删除*p和*q;若指数不等,p->exp<q->exp时*p为和多项式中的一项,p->exp>q->exp时把*q插在*p之前(*q为和多项式中的一项);所有操作之后要相应的移动指针。直到其中的一个链空,把另一个链剩下的结点插在*p之后。
其算法描述如下:
void polyadd(A,B)polynomial *A,*B;//把多项式A和B相加结果多项式在A中{ polynomial *p,*q,*s,*r; float x; p=A->next;q=B->next;//p和q分别指向两个多项式的第一个结点 s=A;//s作为p的前驱 while((p!=NULL)&&(q!=NULL))//两链都不空时反复做 if(p->exp>q->exp)//把q所指结点插入到结果链中去 { r=q->next;//为r后移做准备 q->next=p;//把p接在q所指结点后 s->next=q;//把q接入结果链 s=q;q=r;//修改s和q的当前值 } else if(p->exp<q->exp)//p所指结点进结果链,只须移动指针 { s=p;//s后移 p=p->next;//p指向下一个结点 } else //两链当前结点的指数相等 { x=p->coef+q->coef;//系数相加送x if(x!=0)//x不为0,填入结果链当前结点系数域 { p->coef=x; s=p;//指示p的前驱指针s后移 } else { s->next=p->next;//x为0先释放p所指结点 free(p); } p=s->next;//p指针指向下一个结点 r=q;//为释放q所指结点做准备 q=q->next;//q指向下一个结点 free(r); } if(q!=NULL) s->next=q;//把q链剩余结点链入结果链 free(B);//释放B多项式的头结点}//polyadd
- 线性表应用举例——一元多项式相加问题
- 线性表---一元多项式相加
- 线性表的应用---一元多项式的表示与相加
- 线性表4--一元多项式相加
- 线性表的应用——求解两个多项式相加问题描述(顺序表求解)
- 线性表的应用——求解两个多项式相加问题描述(链表求解)
- 线性表的应用——求解两个多项式相加问题描述(顺序表求解)
- 线性表的应用——求解两个多项式相加问题描述(链表求解)
- 链表应用-- 一元多项式相加
- 一元多项式相加-链表应用
- 线性表之单链表实现一元多项式相加,求值,求导
- 线性表实现一元多项式的表示及相加
- 用链式线性表实现两个一元多项式相加
- 【数据结构 链表的应用】一元多项式相加及相乘 和对问题的分析
- 线性表的应用——一元多项式的代数运算
- 一元多项式的表示及相加 【链表的应用】
- 数据结构 第二章 单链表应用举例——一元多项式求和(待补充)
- C语言一元多项式相加问题
- Windows下的Memcache安装、修改
- 经典vim插件功能说明、安装方法和使用方法介绍(备用)
- PowerDesigner16.0连接MySQL5.0,建立逆向工程图解
- Ubuntu下获取android源码
- 计算机软件著作权
- 线性表应用举例——一元多项式相加问题
- 在做Drupal开发的时候,需要查看的相关日志
- CSDN专访:做一个有节操的开发者
- hibernate.cfg.xml 和每张表对应的hbm文件 生成数据库表
- hrome登陆12306跳过证书下载
- java内部类种类
- 虚拟索引
- AES加密算法在Linux下出现随机加密结果
- EL表达式