资源简介
在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语言版)习题答案》严
- C语言课程设计五子棋游戏带源代码
- CRC8/CRC16/CRC32常见几个标准的算法及
- 国际象棋代码实现
- ifft的c语言编程
- 计算机图形学画月亮C语言
- c语言生成scale-free network
- 高斯函数消元法c语言源代码,解矩阵
- 机器人C语言代码的一个详细
- AD5420驱动C语言
- ftp客户端的C语言实现
- 简单的Linux下Ftp客户端C语言编写
- 基于51单片机的人体感应灯设计
- C语言上机考试经典100题--南开大学出
- RSA加解密算法 C语言实现
- 马踏棋盘C语言算法
- 基于Huffman树的文件压缩C语言源码数据
- 巴特沃斯低通滤波器的c语言实现
- C语言大作业班干选举系统
- 并发式聊天室C语言
- 用C语言实现NFA到DFA的转换过程
- 动态分区分配方式,C语言实现的
- C语言综合 里面含有八皇后问题,蓝
- 二叉排序树C语言版的!.c
- C语言实现telnet
-
ba
se64编码与解码源程序 C语言实现 - 人工智能专家系统C语言版
- C语言 机房收费管理系统
- 成熟 免费adpcm音频C语言 编解码
- 用C语言写的最坏适应算法
评论
共有 条评论