资源简介
在C语言下实现多项式的四则运算及合并同类项,并按升序排序的功能,已成功运行!功能模块包括合并同类项,升序排序,创建多项式,输出多项式,加法,减法,乘法,除法。
代码片段和文件信息
//Polynomial_list
//功能:输入两个多项式(不要求是升幂排列,程序将自动合并同类项和排序),进行加减乘除运算
#include
#include
#include
//结点定义
typedef struct PolyNode
{
int exp; //指数
float coef; //系数
PolyNode* next;
}PolyNode * PolyList;
//函数声明
PolyList CreatePolyList(); //创建多项式链表,返回头指针
void DisplayPolyList(PolyList Poly);//显示多项式
void DestroyPolyList(PolyList L);//释放链表所用存储空间
void MergePoly(PolyList Poly);//将多项式和并同类项
void SortPoly(PolyList Poly);//将多项式按升序排列
PolyList PolyAdd(PolyList PolyA PolyList PolyB);//多项式相加,返回和多项式链表头指针
PolyList PolySub(PolyList polya PolyList polyb);//多项式相减,返回差多项式链表头指针
PolyList PolyMutiply(PolyList PolyA PolyList PolyB);//多项式相乘,结果由PolyC返回
PolyList PolyDivide(PolyList PolyA PolyList PolyB);//多项式相除,结果存到PolyC中,商和余数用系数为0的结点分开
//函数实现
//创建多项式链表,返回头指针
PolyList CreatePolyList()
{
PolyNode *s*rear*head;
int e; //指数
float c; //系数
int n=1; //计数器
head =(PolyNode *) malloc(sizeof(PolyNode));
rear = head;
//输入多项式的系数和指数,若输入系数为0退出
printf(“请输入多项式的第%d项的系数和指数(用逗号分开):“ n++);
scanf(“%f%d“ &c &e);
while(fabs(c) > 1e-6)
{ s = (PolyNode *)malloc(sizeof(PolyNode));
s->exp = e;
s->coef = c;
rear->next = s;
rear = s;
printf(“请输入多项式的第%d项的系数和指数:“ n++);
scanf(“%f%d“ &c &e);
}
rear->next = NULL;
return head;
}
//计算两个多项式(可不按顺序排列) , 结果存到链表PolyC中,并返回
PolyList PolyAdd(PolyList PolyA PolyList PolyB)
{
PolyList PolyC ;
SortPoly(PolyA);
SortPoly(PolyB);
float sum=0;//存储两项系数和
PolyNode *pa *pb *rear *s ;
PolyC = (PolyNode *)malloc(sizeof(PolyNode));
pa = PolyA->next;
pb = PolyB->next;
rear = PolyC;
rear->next = NULL;
while(pa && pb)
{
if(pa->exp == pb->exp)
{
sum = pa->coef+pb->coef;
if(fabs(sum)>1e-6) //如果两两系数不为0,则将两项和存入s中,并插入PolyC尾部
{
s = (PolyNode *)malloc(sizeof(PolyNode));
s->coef = sum;
s->exp = pa->exp;
rear->next = s;
rear = s;
}
//papb指针后移
pa = pa->next;
pb = pb->next;
}
else if(pa->exp>pb->exp) //若pa指数大于pb指数,将pa结点副本插入到PolyC尾部
{
s = (PolyNode *)malloc(sizeof(PolyNode));
s->coef = pa->coef;
s->exp = pa->exp;
rear->next = s ;
rear = s ;
pa = pa->next;
}
else //若pb指数大于pa指数,将pb结点副本插入到PolyC尾部
{
s = (PolyNode *)malloc(sizeof(PolyNode));
s->coef = pb->coef;
s->exp = pb->exp;
rear->next = s;
pb = pb->next;
rear = s ;
}
}
//插入剩余结点
while(pa)
{
s = (PolyNode *)malloc(sizeof(PolyNode));
s->coef = pa->coef;
s->exp = pa->exp;
rear->next = s;
pa = pa->next;
rear = s ;
}
while(pb)
{
s = (PolyNode *)malloc(sizeof(PolyNode));
s->coef = pb->coef;
s->exp = pb->exp;
rear->next = s;
pb = pb->next;
rear = s ;
}
rear->next = NULL;
return PolyC;
}
//释放链表所用存储空间
void DestroyPolyList(PolyList L)
{
PolyNode * p *temp;
p = L;
while(p!=NULL)
{temp = p ; p = p->next; free(temp); }
}
//将多项式和并同类项
void MergeP
相关资源
- 操作系统c语言模拟文件管理系统844
- C语言开发实战宝典
- C++中头文件与源文件的作用详解
- C语言代码高亮html输出工具
- 猜数字游戏 c语言代码
- C语言课程设计
- 数字电位器C语言程序
- CCS FFT c语言算法
- 使用C语言编写的病房管理系统
- 通信过程中的RS编译码程序(c语言)
- 计算机二级C语言上机填空,改错,编
- 用回溯法解决八皇后问题C语言实现
- 简易教务管理系统c语言开发文档
- 操作系统课设 读写者问题 c语言实现
- 小波变换算法 c语言版
- C流程图生成器,用C语言代码 生成C语
- 3des加密算法C语言实现
- 简单的C语言点对点聊天程序
- 单片机c语言源程序(51定时器 八个按
- 个人日常财务管理系统(C语言)
- c语言电子商务系统
- 小甲鱼C语言课件 源代码
- 将图片转换为C语言数组的程序
- C语言实现的一个内存泄漏检测程序
- DES加密算法C语言实现
- LINUX下命令行界面的C语言细胞游戏
- 用单片机控制蜂鸣器播放旋律程序(
- 学校超市选址问题(数据结构C语言版
- 电子时钟 有C语言程序,PROTEUS仿真图
- 尚观培训linux许巍老师关于c语言的课
评论
共有 条评论