C语言数据结构一元多项式
//定义多项式最大项数#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语言数据结构一元多项式相关推荐
- 数据结构—— 一元多项式的运算(相加,相减,相乘)【C语言实现】
用 C语言实现一元多项式的运算(相加,相减,相乘) 1.创建多项式时,无论指数项按什么顺序输入,输出均能实现以升幂顺序输出,且输入时有相同指数项时能够实现合并. 2.能够代入确切的X计算出最终多项式的 ...
- c语言将一个已知头结点的单链表逆序_C语言数据结构实现链表逆序并输出
C语言数据结构实现链表逆序并输出 将一个链表逆序并输出.我用了两种方法来实现,第一种是借助了一个新的空链表:第二种是在原来链表的基础上直接实现逆序. 实例代码: 头文件: #include #incl ...
- 数据结构c语言版第一章答案,《c语言数据结构》第一章概论自测题答案
<<c语言数据结构>第一章概论自测题答案>由会员分享,可在线阅读,更多相关<<c语言数据结构>第一章概论自测题答案(4页珍藏版)>请在人人文库网上搜索. ...
- 一些可运行的C语言数据结构代码
网上有很多C语言数据结构代码:有的不能运行:下面是一些能运行的,和运行截图:备用一下: 1 队列 #include<stdio.h> #include<stdlib.h>#de ...
- C语言数据结构学习用单元测试
药物名称: C语言数据结构学习用单元测试 主治: 本品是基于CUnit编写的.全部的.纯C的数据结构(ADT)各种实现的单元测试.主治基础不牢,水品增长缓慢.建议配合严蔚敏<数据结构>(C ...
- 顺序表输入栈元素c语言,C语言数据结构之栈简单操作
C语言数据结构之栈简单操作 实验: 编写一个程序实现顺序栈的各种基本运算,并在此基础上设计一个主程序,完成如下功能: (1)初始化顺序栈 (2)插入元素 (3)删除栈顶元素 (4)取栈顶元素 (5)遍 ...
- 用数据结构c语言写成绩排序,C语言数据结构 快速排序实例详解
C语言数据结构 快速排序实例详解 一.快速排序简介 快速排序采用分治的思想,第一趟先将一串数字分为两部分,第一部分的数值都比第二部分要小,然后按照这种方法,依次对两边的数据进行排序. 二.代码实现 # ...
- 厦门理工C语言实验报告8,厦门理工c语言数据结构实验
<厦门理工c语言数据结构实验>由会员分享,可在线阅读,更多相关<厦门理工c语言数据结构实验(15页珍藏版)>请在人人文库网上搜索. 1.数据结构实验报告 实验序号:6 实验项目 ...
- 【c语言数据结构】二叉树
c语言数据结构完全二叉树 快速开始 直接参考示例代码即可 介绍 概念 二叉树(Binary tree)是树形结构的一个重要类型. 许多实际问题抽象出来的数据结构往往是二叉树形式,即使是一般的树也能简单 ...
最新文章
- SuperSocket 服务管理器 (ServerManager)
- 利用RC网络降低可调节LDO输出噪声
- 在哪里可以找到用于读取 YML 配置文件的 Spring 文档
- CSS常用样式及示例
- Servlet异常处理
- 关于mpvue音乐小程序github仓库设置私有的声明
- 一键转发抢红包源码及搭建教程
- 定了!这个专业研究生扩招,博士生待遇要提高!已有多所高校新增…
- 怎样格式化电脑_硬盘数据销毁最安全的步骤是怎样的?有公司可以做吗
- tt c mysql t4 bll_通过T4模板实现代码自动生成
- 【NOIP1997】【Luogu2626】斐波那契数列(枚举,质因数分解)
- 利用“Java同包同名类执行顺序”取消Java 网站应用程序Licence验证
- 2015年下半年的读书技术
- systemctl的使用
- 拓端tecdat|R语言股市可视化相关矩阵:最小生成树
- IE8变成IE7的显示方式
- 解决ASP.NET 安装完成报错500
- 【清华大学】操作系统 陈渝 Part2 —— 中断、异常和系统调用
- 关于MyEclipse的servers和WTPservers
- paly 获取数据库的第一条数据