【一元多项式算法】设一个一元多项式采用带头结点的单链表存储,所有结点
按照升幂方式链接。设计一个算法,求两个多项式 A 和 B 的乘积,结果多项式 C
存放在新辟的空间中。

#include<stdio.h>
#include<stdlib.h>typedef struct node {int coef;int expn;struct node* next;
}node;struct node* create(int n) {int i, num, g;struct node* ptr = NULL, * head = NULL, * tail = NULL;printf("Input %d data:\n", n);for (i = 0; i < n; i++){scanf_s("%d %d", &num, &g);ptr = (struct node*)malloc(sizeof(struct node));ptr->coef = num;ptr->expn = g;ptr->next = NULL;if (head == NULL) head = ptr;else tail->next = ptr;tail = ptr;}return head;
}struct node* Multiply(node* L1, node* L2) {int temp;node* ptr=NULL, * head=NULL, * tail=NULL, * ptr1=NULL, * ptr2=NULL;for (ptr1 = L1; ptr1 != NULL; ptr1 = ptr1->next) {for (ptr2 = L2; ptr2 != NULL; ptr2 = ptr2->next) {ptr = (node*)malloc(sizeof(node));ptr->coef = (ptr1->coef) * (ptr2->coef);ptr->expn = ptr1->expn + ptr2->expn;ptr->next = NULL;if (head == NULL)head = ptr;else tail->next = ptr;tail = ptr;}}for (ptr1 = head; ptr1 != NULL; ptr1 = ptr1->next) {for (ptr2 = ptr1->next, tail = ptr1; ptr2 != NULL;) {if (ptr1->expn == ptr2->expn) {ptr1->coef = ptr1->coef + ptr2->coef;tail->next = ptr2->next;free(ptr2);ptr2 = tail->next;}else {tail = ptr2;ptr2 = ptr2->next;}}}for (ptr1 = head; ptr1->next != NULL; ptr1 = ptr1->next) {for (ptr2 = ptr1->next; ptr2 != NULL; ptr2 = ptr2->next) {if (ptr1->expn < ptr2->expn) {temp = ptr1->expn;ptr1->expn = ptr2->expn;ptr2->expn = temp;temp = ptr1->coef;ptr1->coef = ptr2->coef;ptr2->coef = temp;}}}for (ptr = head; ptr != NULL;) {if (ptr->coef==0) {if (ptr == head) {head = head->next;free(ptr);ptr = head;}else {ptr1->next = ptr->next;free(ptr);ptr = ptr1->next;}}else {ptr1 = ptr;ptr = ptr->next;}}return head;
}void print(node* L) {node* p;p = L;while (p!=NULL) {printf("%d %d\n", p->coef, p->expn);p= p->next;}
}int main() {int n1, n2;node* L1, * L2, * L;printf("Input n1:");scanf_s("%d", &n1);L1 = create(n1);printf("Input n2:");scanf_s("%d", &n2);L2 = create(n2);L = Multiply(L1, L2);printf("结果为:\n");print(L);
}

【一元多项式算法】设一个一元多项式采用带头结点的单链表存储,所有结点 按照升幂方式链接。设计一个算法,求两个多项式 A 和 B 的乘积,结果多项式 C 存放在新辟的空间中。相关推荐

  1. 删除带头结点的单链表的奇数结点

    [单链表算法]设带头结点的非空单链表 L,设计一个算法删除 L 中奇数序号 的结点,即删除 L 中第 1.3.5-结点. #include<stdio.h> #include<mal ...

  2. c语言 链表 无头结点,C++ 单链表(无头结点)

    /* 单链表(无头结点) */ #include #include #include using namespace std; struct LNode { int data; // 数据域 LNod ...

  3. 【C语言】数据结构C语言版 实验3 带头结点的单链表

    slnklist.h #include <stdio.h> #include <stdlib.h> /************************************* ...

  4. 【C语言】数据结构C语言版 实验2 不带头结点的单链表

    运行环境:Dev-C++ vs2013可能不能运行 首先新建一个头文件slnklist.h #include <stdio.h> #include <stdlib.h> /** ...

  5. 数据结构练习:运用单链表实现图书管理系统(c/c++)(内含带头结点的单链表的基本操作)

    数据结构练习:运用单链表实现图书管理系统 正文 注意 部分功能运行展示 所包含头文件及结构体的定义 自定义函数 主函数 完整代码 结束语 正文 本程序使用带头节点的单链表存储结构实现,共有六个基本功能 ...

  6. C语言实现了一个具有头结点的单链表(附完整源码)

    实现了一个具有头结点的单链表 有头结点的单链表 实现了一个具有头结点的单链表完整源码 有头结点的单链表 线性表的顺序存储结构的特点是逻辑关系上相邻的两个元素在物理位置上也相邻,因此可以随机存取表中的任 ...

  7. java带头结点的单链表_自己实现集合框架 (五): 带头结点单链表的实现

    这是系列文章,每篇文章末尾均附有源代码地址.目的是通过模拟集合框架的简单实现,从而对常用的数据结构和java集合有个大概的了解.当然实现没有java集合的实现那么复杂,功能也没有那么强大,但是可以通过 ...

  8. 2.3 带头结点的单链表:理论+编程实战(C语言详细)

    1.顺序存储:线性表/栈/队列:理论+C语言实现–详细 2.1 链式存储概述 和 2.2 线性表的链式存储–单链表(C语言详细实现) 文章目录 2.3 带头结点的单链表 1. 带头结点的单链表基本概念 ...

  9. java带头节点的单链表_自己实现集合框架(五):带头结点单链表的实现

    这是系列文章,每篇文章末尾均附有源代码地址.目的是通过模拟集合框架的简单实现,从而对常用的数据结构和java集合有个大概的了解.当然实现没有java集合的实现那么复杂,功能也没有那么强大,但是可以通过 ...

最新文章

  1. 【Unity】修改UGUI Minimap(2.2.5)的显示范围(min,max)
  2. Java虚拟机笔记(一):类加载机制
  3. To connect to files.phpmyadmin.net insecurely, use `--no-check-certificate‘
  4. 交交变换电路学习笔记
  5. 4.1.9 OS之文件系统的层次结构
  6. (转)Struts2的拦截器
  7. 763. 划分字母区间(JavaScript)
  8. oracle 错误码1438,一次ora-01438错误的处理
  9. cloverconfig机型修改_Clover的Config新手设置教程
  10. windows命令行测试硬盘速度
  11. 惠普笔记本安装Linux 7及NVIDIA Quandro P600显卡驱动
  12. Docker搭建Jenkins2.60.3版本,及更换jenkins下载源
  13. linux复制文件的命令是什么?
  14. 4874: 筐子放球
  15. c语言转换绝对值函数的程序,c语言abs(c语言求绝对值的程序)
  16. 服务器磁盘配置信息,服务器磁盘阵列配置
  17. 用c语言编程宿舍管理系统,学生宿舍管理系统 C语言编程.doc
  18. 我不爱的那个女人[转]
  19. 肠道菌群检测粪便样本的采集保存方法
  20. 【SSLGZ 1344】Knights

热门文章

  1. 字符串之间的大小比较方法
  2. sklearn中predict_proba用法(注意和predict的区别)
  3. 字符串转时间(time_t)
  4. 知情搜索(一)-启发法
  5. Oracle 常见错误总结及问题解决方法
  6. Reactive的使用(reactive 和 shallowReactive使用上区别)
  7. Java实现之普利姆(Prim)算法
  8. Python 抓取 快代理、西刺代理 、西拉代理等等 构建免费代理池
  9. 计算机c盘满了怎么移到d盘去,我电脑里的c盘满了,d盘还有容量,请问怎么把d盘多的容量移到c盘中?就是所谓的分区。...
  10. 基于JavaSwing开发模拟电梯系统+分析报告 课程设计 大作业源码