//定义多项式最大项数#include<stdio.h>#include<malloc.h>#define MAX 20//定义存放多项式的数组类型typedef struct{float  coef;int   exp;}PolyArray[MAX];//定义单链表结点类型typedef struct  pnode{float coef;int exp;struct  pnode *next;}PolyNode;//输出多项式链表void  DispPoly(PolyNode  *L){PolyNode  *p = L->next;while (p != NULL){printf("%gX^%d", p->coef, p->exp);p = p->next;}printf("\n");}//一元多项式的表示//建立多项式链表)void  createListR(PolyNode *L, PolyArray a, int n){PolyNode *s, *r;int i;L = (PolyNode *)malloc(sizeof(PolyNode));L->next = NULL;r = L;for (i = 0; i<n; i++){s = (PolyNode*)malloc(sizeof(PolyNode));s->coef = a[i].coef;s->exp = a[i].exp;s->next = NULL;r->next = s;r = s;}r->next = NULL;}//原多项式链表排序void sort(PolyNode *head){PolyNode *p = head->next, *q, *r;if (p != NULL){r = p->next;p->next = NULL;p = r;while (p != NULL){r = p->next;q = head;while (q->next != NULL && q->next->exp >p->exp)q = q->next;p->next = q->next;q->next = p;p = r;}}}//一元多项式的相加void add(PolyNode *ha, PolyNode *hb, PolyNode *hc){PolyNode*pa = ha->next, *pb = hb->next, *s, *tc;float c;hc = (PolyNode*)malloc(sizeof(PolyNode));tc = hc;while (pa != NULL && pb != NULL){if (pa->exp > pb->exp){s = (PolyNode*)malloc(sizeof(PolyNode));s->exp = pa->exp; s->coef = pa->coef;s->next = NULL;tc->next = s;tc = s;pa = pa->next;}else if (pa->exp <pb->exp){s = (PolyNode *)malloc(sizeof(PolyNode));s->exp = pb->exp;s->coef = pb->coef;s->next = NULL;tc->next = s;tc = s;pb = pb->next;}else {c = pa->coef + pb->coef;if (c){s = (PolyNode *)malloc(sizeof(PolyNode));s->exp = pa->exp;s->coef = c;s->next = NULL;tc->next = s; tc = s;}pa = pa->next;pb = pb->next;}}if (pb != NULL)pa = pb;while (pa != NULL){s = (PolyNode*)malloc(sizeof(PolyNode));s->exp = pa->exp;s->coef = pa->coef;s->next = NULL;tc->next = s;tc = s;pa = pa->next;}tc->next = NULL;}//主函数的设定及调用void main(){PolyNode *ha, *hb, *hc;PolyArray a = { { 1.2, 0 }, { 2.5, 1 }, { 3.2, 3 }, { 2.5, 5 } };PolyArray b = { { 3.2, 0 }, { 2.5, 1 }, { 3.2, 3 }, { 2.5, 5 }, { 5.4, 10 } };createListR(ha, a, 4);createListR(hb, b, 5);printf("原多项式A :"); DispPoly(ha);printf("原多项式 B :"); DispPoly(hb);sort(ha);sort(hb);printf("有序多项式A :");DispPoly(ha);printf("有序多项式B :");DispPoly(hb);add(ha, hb, hc);printf("多项式相加:");DispPoly(hc);}//定义多项式最大项数#include<stdio.h>#include<malloc.h>#define MAX 20//定义存放多项式的数组类型typedef struct{float  coef;int   exp;}PolyArray[MAX];//定义单链表结点类型typedef struct  pnode{float coef;int exp;struct  pnode *next;}PolyNode,*linklist;//输出多项式链表void  DispPoly(linklist L){linklist  p = L->next;while (p != NULL){printf("%gX^%d", p->coef, p->exp);p = p->next;}printf("\n");}//一元多项式的表示//建立多项式链表)void  createListR(linklist &L, PolyArray a, int n){linklist s, r;int i;L = (linklist)malloc(sizeof(PolyNode));L->next = NULL;r = L;for (i = 0; i<n; i++){s = (linklist)malloc(sizeof(PolyNode));s->coef = a[i].coef;s->exp = a[i].exp;s->next = NULL;r->next = s;r = s;}r->next = NULL;}//原多项式链表排序void sort(linklist head){linklist p = head->next, q, r;if (p != NULL){r = p->next;p->next = NULL;p = r;while (p != NULL){r = p->next;q = head;while (q->next != NULL && q->next->exp >p->exp)q = q->next;p->next = q->next;q->next = p;p = r;}}}//一元多项式的相加void add(linklist ha, linklist hb, linklist hc){linklist pa = ha->next, pb = hb->next, s, tc;float c;hc = (linklist)malloc(sizeof(PolyNode));tc = hc;while (pa != NULL && pb != NULL){if (pa->exp > pb->exp){s = (linklist)malloc(sizeof(PolyNode));s->exp = pa->exp; s->coef = pa->coef;s->next = NULL;tc->next = s;tc = s;pa = pa->next;}else if (pa->exp <pb->exp){s = (linklist)malloc(sizeof(PolyNode));s->exp = pb->exp;s->coef = pb->coef;s->next = NULL;tc->next = s;tc = s;pb = pb->next;}else {c = pa->coef + pb->coef;if (c){s = (linklist)malloc(sizeof(PolyNode));s->exp = pa->exp;s->coef = c;s->next = NULL;tc->next = s; tc = s;}pa = pa->next;pb = pb->next;}}if (pb != NULL)pa = pb;while (pa != NULL){s = (linklist)malloc(sizeof(PolyNode));s->exp = pa->exp;s->coef = pa->coef;s->next = NULL;tc->next = s;tc = s;pa = pa->next;}tc->next = NULL;}//主函数的设定及调用void main(){linklist ha, hb, hc;PolyArray a = { { 1.2, 0 }, { 2.5, 1 }, { 3.2, 3 }, { 2.5, 5 } };PolyArray b = { { 3.2, 0 }, { 2.5, 1 }, { 3.2, 3 }, { 2.5, 5 }, { 5.4, 10 } };createListR(ha, a, 4);createListR(hb, b, 5);printf("原多项式A :"); DispPoly(ha);printf("原多项式 B :"); DispPoly(hb);sort(ha);sort(hb);printf("有序多项式A :");DispPoly(ha);printf("有序多项式B :");DispPoly(hb);add(ha, hb, hc);printf("多项式相加:");DispPoly(hc);}

C语言数据结构一元多项式相关推荐

  1. 数据结构—— 一元多项式的运算(相加,相减,相乘)【C语言实现】

    用 C语言实现一元多项式的运算(相加,相减,相乘) 1.创建多项式时,无论指数项按什么顺序输入,输出均能实现以升幂顺序输出,且输入时有相同指数项时能够实现合并. 2.能够代入确切的X计算出最终多项式的 ...

  2. c语言将一个已知头结点的单链表逆序_C语言数据结构实现链表逆序并输出

    C语言数据结构实现链表逆序并输出 将一个链表逆序并输出.我用了两种方法来实现,第一种是借助了一个新的空链表:第二种是在原来链表的基础上直接实现逆序. 实例代码: 头文件: #include #incl ...

  3. 数据结构c语言版第一章答案,《c语言数据结构》第一章概论自测题答案

    <<c语言数据结构>第一章概论自测题答案>由会员分享,可在线阅读,更多相关<<c语言数据结构>第一章概论自测题答案(4页珍藏版)>请在人人文库网上搜索. ...

  4. 一些可运行的C语言数据结构代码

    网上有很多C语言数据结构代码:有的不能运行:下面是一些能运行的,和运行截图:备用一下: 1 队列 #include<stdio.h> #include<stdlib.h>#de ...

  5. C语言数据结构学习用单元测试

    药物名称: C语言数据结构学习用单元测试 主治: 本品是基于CUnit编写的.全部的.纯C的数据结构(ADT)各种实现的单元测试.主治基础不牢,水品增长缓慢.建议配合严蔚敏<数据结构>(C ...

  6. 顺序表输入栈元素c语言,C语言数据结构之栈简单操作

    C语言数据结构之栈简单操作 实验: 编写一个程序实现顺序栈的各种基本运算,并在此基础上设计一个主程序,完成如下功能: (1)初始化顺序栈 (2)插入元素 (3)删除栈顶元素 (4)取栈顶元素 (5)遍 ...

  7. 用数据结构c语言写成绩排序,C语言数据结构 快速排序实例详解

    C语言数据结构 快速排序实例详解 一.快速排序简介 快速排序采用分治的思想,第一趟先将一串数字分为两部分,第一部分的数值都比第二部分要小,然后按照这种方法,依次对两边的数据进行排序. 二.代码实现 # ...

  8. 厦门理工C语言实验报告8,厦门理工c语言数据结构实验

    <厦门理工c语言数据结构实验>由会员分享,可在线阅读,更多相关<厦门理工c语言数据结构实验(15页珍藏版)>请在人人文库网上搜索. 1.数据结构实验报告 实验序号:6 实验项目 ...

  9. 【c语言数据结构】二叉树

    c语言数据结构完全二叉树 快速开始 直接参考示例代码即可 介绍 概念 二叉树(Binary tree)是树形结构的一个重要类型. 许多实际问题抽象出来的数据结构往往是二叉树形式,即使是一般的树也能简单 ...

最新文章

  1. SuperSocket 服务管理器 (ServerManager)
  2. 利用RC网络降低可调节LDO输出噪声
  3. 在哪里可以找到用于读取 YML 配置文件的 Spring 文档
  4. CSS常用样式及示例
  5. Servlet异常处理
  6. 关于mpvue音乐小程序github仓库设置私有的声明
  7. 一键转发抢红包源码及搭建教程
  8. 定了!这个专业研究生扩招,博士生待遇要提高!已有多所高校新增…
  9. 怎样格式化电脑_硬盘数据销毁最安全的步骤是怎样的?有公司可以做吗
  10. tt c mysql t4 bll_通过T4模板实现代码自动生成
  11. 【NOIP1997】【Luogu2626】斐波那契数列(枚举,质因数分解)
  12. 利用“Java同包同名类执行顺序”取消Java 网站应用程序Licence验证
  13. 2015年下半年的读书技术
  14. systemctl的使用
  15. 拓端tecdat|R语言股市可视化相关矩阵:最小生成树
  16. IE8变成IE7的显示方式
  17. 解决ASP.NET 安装完成报错500
  18. 【清华大学】操作系统 陈渝 Part2 —— 中断、异常和系统调用
  19. 关于MyEclipse的servers和WTPservers
  20. paly 获取数据库的第一条数据

热门文章

  1. Android通过DeepLink方式跳转其他App传递参数
  2. 滑动窗口与双指针的区别
  3. 信息部门人员角色划分及任职资格
  4. 【电子】Baseband Signal and Passband Signal
  5. 通过按位与和按位或操作
  6. 常用工具类 Math:数学计算 Random:生成伪随机数 SecureRandom:生成安全的随机数 2020-2-13
  7. 云服务器(ubuntu)搭建nginx-rtmp服务器 实现直播功能(纯命令行操作)
  8. 单片机C语言数据存储原理,介绍单片机中C语言的数据存储与程序编写
  9. Linux下nginx编译安装,重新添加模块
  10. 理解HTTPS加密安全传输流程