C语言——一元多项式定义求和 [单链表] (数据结构)
- 输入多项式项数后,对多项式进行描述,将求两个多项式和
- 仅为demo基础版,可拓展。
- 单链表实现
#include<stdio.h>
#include<stdlib.h>
#include<malloc.h>
typedef int ElemType;
/*单项链表的声明*/
typedef struct PolynNode{ int coef; // 系数 int expn; // 指数 struct PolynNode *next;
}PolynNode,*PolynList;
/*正位序(插在表尾)输入n个元素的值,建立带表头结构的单链线性表*/
/*指数系数一对一对输入*/
void CreatePolyn(PolynList &L,int n){ int i; PolynList p,q; L=(PolynList)malloc(sizeof(PolynNode)); // 生成头结点 L->next=NULL; q=L; printf("成对输入%d个数据\n",n); for(i=1;i<=n;i++){ p=(PolynList)malloc(sizeof(PolynNode)); scanf("%d%d",&p->coef,&p->expn); //指数和系数成对输入 q->next=p; q=q->next; } p->next=NULL;
}
// 初始条件:单链表L已存在
// 操作结果: 依次对L的每个数据元素调用函数vi()。一旦vi()失败,则操作失败
void PolynTraverse(PolynList L,void(*vi)(ElemType, ElemType)){ PolynList p=L->next; while(p){ vi(p->coef, p->expn); if(p->next){ printf(" + "); //“+”号的输出,最后一项后面没有“+” } p=p->next; } printf("\n");
}
/*ListTraverse()调用的函数(类型要一致)*/
void visit(ElemType c, ElemType e){ if(c != 0){ printf("%dX^%d",c,e); //格式化输出多项式每一项 }
}
/* 多项式相加,原理:归并 */
/* 参数:两个已经存在的多项式 */
/* 返回值:归并后新的多项式的头结点 */
PolynList MergeList(PolynList La, PolynList Lb){ PolynList pa, pb, pc, Lc; pa = La->next; pb = Lb->next; Lc = pc = La; // 用La的头结点作为Lc的头结点 while(pa&&pb){ if(pa->expn < pb->expn){ pc->next = pa; //如果指数不相等,pc指针连上指数小的结点, pc = pa; pa = pa->next; //指向该结点的指针后移 } else if (pa ->expn > pb->expn ){ pc->next = pb; //pc指针连上指数小的结点, pc = pb; pb = pb->next; //指向该结点的指针后移 } else{ //(pa ->expn = pb->expn ) pa->coef = pa->coef + pb->coef; //指数相等时,系数相加 pc->next = pa; pc = pa; pa = pa->next; //两指针都往后移 pb = pb->next; } } pc->next = pa ? pa:pb; // 插入剩余段 return Lc;
} int main(){ PolynList ha,hb,hc; int a;printf("请输入多项式项数:\n");scanf("%d",&a);printf("非递减输入多项式ha, "); CreatePolyn(ha,a); // 正位序输入n个元素的值 printf("非递减输入多项式hb, "); CreatePolyn(hb,a); // 正位序输入n个元素的值 printf("\n"); printf("多项式ha :\n"); PolynTraverse(ha, visit); printf("\n"); printf("多项式hb :\n"); PolynTraverse(hb, visit); printf("\n"); printf("求和结果 :\n"); hc = MergeList(ha,hb); PolynTraverse(hc, visit); }
C语言——一元多项式定义求和 [单链表] (数据结构)相关推荐
- 《数据结构》c语言版学习笔记——单链表结构(线性表的链式存储结构Part1)
线性表的链式存储结构 数据结构系列文章 第二章 单链表结构 文章目录 线性表的链式存储结构 前言 一.单链表的建立 代码 二.单链表的读取 代码 三.单链表的插入 代码 四.单链表的删除 代码 五.单 ...
- 数据结构一元多项式的相加-单链表实现
实验内容:把任意给定的两个一元多项式P(x) ,Q(x) 输入计算机,计算它们的和并输出计算结果. 一元多项式可以用单链表表示,结点结构图示如下: coef exp next 首先分析一下这个过程是 ...
- 使用单链表数据结构存储结构化的学生信息
使用单链表数据结构存储结构化的学生信息 一.题目描述 定义一个学生结构体,包含有:学号,姓名,成绩.输入N个学生的信息,并进行基本的链表操作.(更好的阅读体验,请在我的博客网站上阅读此文:使用单链表数 ...
- Nwafu-OJ-1485 Problem o C语言实习题八——单链表结点的阶乘和
问题 : C语言实习题八--单链表结点的阶乘和 时间限制: 1 Sec 内存限制: 128 MB 提交: 5120 解决: 1555 [提交][状态][讨论版] 题目描述 要求实现一个函数,求单向 ...
- java 单链表数据结构的示例
前言 单链表是一种链式存取的数据结构,用一组地址任意的存储单元存放线性表中的数据元素.链表中的数据是以结点来表示的,每个结点的构成:元素(数据元素的映象) + 指针(指示后继元素存储位置),元素就是存 ...
- c语言实现单链表数据结构,数据结构与算法-C语言实现单链表,以及单链表的常用方法...
C语言知识点提要: Struct:Struct 内可放置各种类型的数据 格式为: Struct TagName { .............(元素类型 元素名称) } 不同Struct内的成员名称可 ...
- 单链表折半查找c语言,为什么有序的单链表不能进行折半查找
公告: 为响应国家净网行动,部分内容已经删除,感谢读者理解. 话题:为什么有序的单链表不能进行折半查找 问题详情:急!!!!拜托高手解答 等级低 分数不高 请帮帮忙 谢谢了回答:这是由链表的特决定的. ...
- 链表归并成递减c语言,将递增有序单链表A和B归并成表C 递减单链表的尾插法建立和输出...
自己辛苦成果,拿出来帮助那些数据结构没学好和C语言基础差的人 #include #include typedef struct Node { int data; struct Node *next; ...
- 逆向链表c语言 abcdef,6-6 求单链表元素序号 (5 分)
本文最后更新于742天前,其中的信息可能已经有所发展或是发生改变. 本题要求实现一个函数,求带头结点的单链表中元素序号. 函数接口定义: int Locate ( LinkList L, ElemTy ...
最新文章
- Tableau实战系列浏览 Tableau 环境(二) -工作区域
- datalength,求字符串的字节数
- Python工程能力进阶、数学基础、经典机器学习模型实战、深度学习理论基础和模型调优技巧……胜任机器学习工程师岗位需要学习什么?...
- 控制原理实验根轨迹MATLAB,《自动控制原理》实验报告(线性系统的根轨迹)
- mysql windows 安装_Windows 安装 Mysql(zip格式)
- Mustache.js使用笔记(内容属于转载总结)
- android中多态的应用_动态代理原理及在 Android 中的应用
- Wireshark之捕获过滤器
- asp.net js 提示信息封装函数
- 从电视主播到高考,人工智能还能干些什么
- 模型堆叠(Stacking)和模型融合的原理与实现以及一个库heamy的介绍
- bzoj4144【AMPPZ2014】Petrol
- VIM批量文件查找和替换
- 如何利用shell查看Ubuntu系统版本号和电脑类型
- android图片管理实例,Android图片处理实例介绍(图)
- java课程设计学生信息管理系统。
- echarts全国各市地图坐标
- c++邻接表实现BFS算法遍历
- 老树开新花,慧聪尚能饭否?
- github 443问题
热门文章
- android灯光蜂鸣器控制节点指令代码,北斗手机app -北斗手机appV1.5.48
- Linux如何安装集群及细节操作
- 微信小程序开发笔记 进阶篇④——基于iconfont快速实现icon图标显示
- B站后台源代码泄露,官方回应声明黑话指南
- 2012 Android手机市场趋势大胆猜想
- java代码制作activiti会签_activiti设计器会签人员配置
- linux 扫描 hba卡磁盘,Linux下更换HBA卡重新扫盘
- NLP-阅读理解-2015:MRC模型-指导机器去阅读并理解【开篇之作】【完形填空任务】【第一次构建大批量有监督机器阅读理解训练语料】【三种模型结构:LSTM、Attention、Impatient】
- 上位机(地面站)之地图航线创建的摸索总结
- OSChina 周五乱弹 ——和2.1米的女友接吻啥感觉?