• 输入多项式项数后,对多项式进行描述,将求两个多项式和
  • 仅为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语言——一元多项式定义求和 [单链表] (数据结构)相关推荐

  1. 《数据结构》c语言版学习笔记——单链表结构(线性表的链式存储结构Part1)

    线性表的链式存储结构 数据结构系列文章 第二章 单链表结构 文章目录 线性表的链式存储结构 前言 一.单链表的建立 代码 二.单链表的读取 代码 三.单链表的插入 代码 四.单链表的删除 代码 五.单 ...

  2. 数据结构一元多项式的相加-单链表实现

    实验内容:把任意给定的两个一元多项式P(x) ,Q(x) 输入计算机,计算它们的和并输出计算结果. 一元多项式可以用单链表表示,结点结构图示如下: coef  exp next 首先分析一下这个过程是 ...

  3. 使用单链表数据结构存储结构化的学生信息

    使用单链表数据结构存储结构化的学生信息 一.题目描述 定义一个学生结构体,包含有:学号,姓名,成绩.输入N个学生的信息,并进行基本的链表操作.(更好的阅读体验,请在我的博客网站上阅读此文:使用单链表数 ...

  4. Nwafu-OJ-1485 Problem o C语言实习题八——单链表结点的阶乘和

    问题 : C语言实习题八--单链表结点的阶乘和 时间限制: 1 Sec  内存限制: 128 MB 提交: 5120  解决: 1555 [提交][状态][讨论版] 题目描述 要求实现一个函数,求单向 ...

  5. java 单链表数据结构的示例

    前言 单链表是一种链式存取的数据结构,用一组地址任意的存储单元存放线性表中的数据元素.链表中的数据是以结点来表示的,每个结点的构成:元素(数据元素的映象) + 指针(指示后继元素存储位置),元素就是存 ...

  6. c语言实现单链表数据结构,数据结构与算法-C语言实现单链表,以及单链表的常用方法...

    C语言知识点提要: Struct:Struct 内可放置各种类型的数据 格式为: Struct TagName { .............(元素类型 元素名称) } 不同Struct内的成员名称可 ...

  7. 单链表折半查找c语言,为什么有序的单链表不能进行折半查找

    公告: 为响应国家净网行动,部分内容已经删除,感谢读者理解. 话题:为什么有序的单链表不能进行折半查找 问题详情:急!!!!拜托高手解答 等级低 分数不高 请帮帮忙 谢谢了回答:这是由链表的特决定的. ...

  8. 链表归并成递减c语言,将递增有序单链表A和B归并成表C 递减单链表的尾插法建立和输出...

    自己辛苦成果,拿出来帮助那些数据结构没学好和C语言基础差的人 #include #include typedef struct Node { int data; struct Node *next; ...

  9. 逆向链表c语言 abcdef,6-6 求单链表元素序号 (5 分)

    本文最后更新于742天前,其中的信息可能已经有所发展或是发生改变. 本题要求实现一个函数,求带头结点的单链表中元素序号. 函数接口定义: int Locate ( LinkList L, ElemTy ...

最新文章

  1. Tableau实战系列浏览 Tableau 环境(二) -工作区域
  2. datalength,求字符串的字节数
  3. Python工程能力进阶、数学基础、经典机器学习模型实战、深度学习理论基础和模型调优技巧……胜任机器学习工程师岗位需要学习什么?...
  4. 控制原理实验根轨迹MATLAB,《自动控制原理》实验报告(线性系统的根轨迹)
  5. mysql windows 安装_Windows 安装 Mysql(zip格式)
  6. Mustache.js使用笔记(内容属于转载总结)
  7. android中多态的应用_动态代理原理及在 Android 中的应用
  8. Wireshark之捕获过滤器
  9. asp.net js 提示信息封装函数
  10. 从电视主播到高考,人工智能还能干些什么
  11. 模型堆叠(Stacking)和模型融合的原理与实现以及一个库heamy的介绍
  12. bzoj4144【AMPPZ2014】Petrol
  13. VIM批量文件查找和替换
  14. 如何利用shell查看Ubuntu系统版本号和电脑类型
  15. android图片管理实例,Android图片处理实例介绍(图)
  16. java课程设计学生信息管理系统。
  17. echarts全国各市地图坐标
  18. c++邻接表实现BFS算法遍历
  19. 老树开新花,慧聪尚能饭否?
  20. github 443问题

热门文章

  1. android灯光蜂鸣器控制节点指令代码,北斗手机app -北斗手机appV1.5.48
  2. Linux如何安装集群及细节操作
  3. 微信小程序开发笔记 进阶篇④——基于iconfont快速实现icon图标显示
  4. B站后台源代码泄露,官方回应声明黑话指南
  5. 2012 Android手机市场趋势大胆猜想
  6. java代码制作activiti会签_activiti设计器会签人员配置
  7. linux 扫描 hba卡磁盘,Linux下更换HBA卡重新扫盘
  8. NLP-阅读理解-2015:MRC模型-指导机器去阅读并理解【开篇之作】【完形填空任务】【第一次构建大批量有监督机器阅读理解训练语料】【三种模型结构:LSTM、Attention、Impatient】
  9. 上位机(地面站)之地图航线创建的摸索总结
  10. OSChina 周五乱弹 ——和2.1米的女友接吻啥感觉?