这里测试用例有很多的坑
我是一点点改出来的:

  1. 输入的多项式正负全抵消,输出是一个0,而不是多个0
  2. 输入的多项式其中一个为-1,-1,即为空
  3. 输入的多项式两个都为-1,-1时,结果为0

我的思路是在A链表的基础上进行修改:
1.当A和B的系数相等,就直接修改A的数值

 if (pA->zhishu == pB->zhishu){pA->xishu += pB->xishu;preA = pA;pA = pA->next;pB = pB->next;}

2.当A的系数大于B的系数,就让A的指针往后移

 else if (pA->zhishu > pB->zhishu){preA = pA;pA = pA->next;}

3.当A的系数小于B的系数,此时B节点应该插在A节点前面,所以我们需要设置一个保存A的前驱节点的指针preA

else
{LNode *q = pB->next;preA->next = pB;preA = pB;pB->next = pA;pB = q;
}

同时因为pB->next = pA这条语句会使原pB丢失连接,所以我们需要一个指针q来保存pB->next的连接。如图所示:


直接上代码:

#include <stdio.h>
#include <stdlib.h>
typedef struct LNode
{int xishu;int zhishu;LNode *next;
} LNode, *LinkedList;
void PolySum(LinkedList &A, LinkedList B)
{LNode *pA = A->next;LNode *preA = A;LNode *pB = B->next;while (pA != nullptr && pB != nullptr){if (pA->zhishu == pB->zhishu){pA->xishu += pB->xishu;preA = pA;pA = pA->next;pB = pB->next;}else if (pA->zhishu > pB->zhishu){preA = pA;pA = pA->next;}else{LNode *q = pB->next;preA->next = pB;preA = pB;pB->next = pA;pB = q;}}while (pB != nullptr){preA->next = pB;preA = pB;pB = pB->next;}
}
void print(LinkedList L)
{LNode *p = L->next;bool flag = false;while (p){if (p->xishu == 0){p = p->next;continue;}printf("%d %d ", p->xishu, p->zhishu);flag = true;p = p->next;}if (!flag)printf("0\n");
}
void InitList(LinkedList &L, int index[], int len)
{L = (LinkedList)malloc(sizeof(LNode));L->next = nullptr;LNode *p;LNode *q = L;for (int i = 0; i < len; i += 2){p = (LNode *)malloc(sizeof(LNode));p->xishu = index[i];p->zhishu = index[i + 1];p->next = nullptr;q->next = p;q = p;}
}
/*** 输入:2 7 3 5 12 1 6 0 -1 -1*       7 5 9 4 3 0 -1 -1* 输出:2 7 10 5 9 4 12 1 9 0** */
int main()
{int i1 = 0, i2 = 0;int item = 0;int index1[200000];int index2[200000];while (item != -1){scanf("%d", &item);index1[i1++] = item;}scanf("%d", &item);item = 0;while (item != -1){scanf("%d", &item);index2[i2++] = item;}LinkedList L1;LinkedList L2;InitList(L1, index1, i1 - 1);InitList(L2, index2, i2 - 1);PolySum(L1, L2);print(L1);
}

数据结构单链表——一元多项式求和(C语言版)相关推荐

  1. 数据结构-单链表基本操作(C语言实现)

    参考书:王道考研数据结构 (此贴为博主学习408的笔记,因博主也是学习者,个人总结如有错误欢迎指正.如有侵权请告知,马上删除致歉)​​ 单链表定义 单链表是线性表的链式存储,通过一组任意的存储单元来存 ...

  2. 用c语言描述单链表的数据类型,数据结构—单链表(类C语言描述)

    单链表 1.链接存储方法 链接方式存储的线性表简称为链表(Linked List).     链表的具体存储表示为: ① 用一组任意的存储单元来存放线性表的结点(这组存储单元既可以是连续的,也可以是不 ...

  3. 数据结构—单链表(类C语言描写叙述)

    单链表 1.链接存储方法 链接方式存储的线性表简称为链表(Linked List).     链表的详细存储表示为: ① 用一组随意的存储单元来存放线性表的结点(这组存储单元既能够是连续的.也能够是不 ...

  4. 数据结构—单链表(类C语言描述)

    单链表 1.链接存储方法 链接方式存储的线性表简称为链表(Linked List). 链表的具体存储表示为: ① 用一组任意的存储单元来存放线性表的结点(这组存储单元既可以是连续的,也可以是不连续的) ...

  5. 单链表一元多项式求和java_计算一元多项式的相加

    一元多项式的表达和相加 ​ 使用单链表表示一元多项式,由于使用java语言自己编写实现,没有使用LinkedList集合实现.所以需要创建单链表的类,类中包含指数,系数和后继元素的地址.类的设计如下: ...

  6. c++单链表 一元多项式求和_C++一元多项式相加

    匿名用户 1级 2010-12-08 回答 #include "stdafx.h" #include using namespace std; template class SqL ...

  7. C语言数据结构单链表链表

    数据结构–单链表 学习了顺序表,我们发现顺序表在向里面存放数据的时候很麻烦,比如我们要使用头插法存放一个数据到顺序表的时候,我们要将整个表都向后挪一位,这个操作就让人很难受.那么有没有一种结构可以让我 ...

  8. php链表和联表的区别,PHP_浅谈PHP链表数据结构(单链表),链表:是一个有序的列表,但 - phpStudy...

    浅谈PHP链表数据结构(单链表) 链表:是一个有序的列表,但是它在内存中是分散存储的,使用链表可以解决类似约瑟夫问题,排序问题,搜索问题,广义表 单向链表,双向链表,环形链表 PHP的底层是C,当一个 ...

  9. 数据结构(十五) -- C语言版 -- 树 - 二叉树的操作进阶之创建、插入、删除、查询、销毁

    内容预览 零.读前说明 一.概述 二.数据模型分析创建 2.1.节点的结构模型 2.2.操作函数结构模型 三.创建 四.插入 4.1.在树中的某一个叶子节点位置插入新节点 4.2.在树中的某一个非叶子 ...

最新文章

  1. CrackMe_001
  2. 成就动机理论由谁提出_【教资笔试重点】学习动机理论
  3. Minimum Cost-最小费用最大流
  4. python三维图旋转_SciPyTutorial-图像的矩阵旋转变换
  5. 开源Math.NET基础数学类库使用(11)C#计算相关系数
  6. vue项目适应不同屏幕做的适配器
  7. java 获取mp4 缩略图_java获取视频缩略图
  8. linux系统下安装qgis,深度操作系统 deepin 15.11安装 QGIS 3.4
  9. Ubuntu 16.04安装Bless十六进制编辑器
  10. 成立出版社的条件_厦门大学出版社招聘启事
  11. 和push的区别_RocketMQ的消息订阅push和pull的区别
  12. 清华大学黄民烈老师:本科生如何做出好的科研
  13. HyperLogLog设计和实战
  14. PHP系统学习3 正则
  15. 黑苹果alc269声卡仿冒id_ALC269声卡仿冒驱动的制作问题,请紫米、威廉等高手指导一下。...
  16. 大核注意力Large Kernel Attention(LKA)
  17. 发现了一个开源的sip软电话项目(C#)
  18. 谷歌fireBase推送
  19. 包装严重的IT行业,作为面试官,我是如何甄别应聘者的包装程度!
  20. 2020-4-18 深度学习笔记20 - 深度生成模型 2 (深度信念网络DBN,深度玻尔兹曼机DBM)

热门文章

  1. Web前端——登录界面hover效果
  2. APEX包管理器简述(二)
  3. 阿里起诉淘宝假货店主,携手数家公司利用大数据打假
  4. socket error 10038查错
  5. ! LaTeX Error: File xxx.sty not found-统一解决办法
  6. 【3】IMU模块:PA-IMU-460 ROS驱动 + 与GNSS时间同步
  7. 如何在mac下启动mongoDB
  8. visual basic_Visual Basic的随机数生成的检验
  9. MAL-PEG-NH2,马来酰亚胺-PEG-胺|mal修饰Fe3O4活化磁珠200-300nm|mal修饰SiO2@Fe3O4磁珠200-300nm齐岳生物供应
  10. 一个人在家怎么做自媒体?4个靠谱平台,门槛低、变现很简单