资源简介
这是使用C语言写成。实现了一元多项式的加减乘的运算。我们使用计算机处理的对象之间通常存在着的是一种最简单的线性关系,这类数学模型可称为线性的数据结构。而数据存储结构有两种:顺序存储结构和链式存储结构。线性表是最常用且最简单的一种数据结构。所以我们做的是———–一元多项式的表示及相加,其过程其实是对线性标的操作。实验结构和链接存储结构上的运算以及熟练运用掌握的线性表的操作,实现一元n次多项式的目的是掌握线性表的基本操作,插入、删除、查找,以及线性表合并等运算在顺序存储的加法运算。学习实现一元n次多项式的加法是符号多项式的操作,是表处理的典型用例,需要注意的是:顺序存储结构指的是用数组方法,使用数组方法实现时,在插入和删除的方面,数组不如链表灵活,方法复杂,删除其中一个需要将其后的数组元素改变位置,使其数组保持原有的顺序结构,在查找方面较链表简单,只需要知道其下标就可以知道。链接存储结构指的是用链表方法,值得注意的是,删除和插入较为灵活,不需要变动大多数元素,但是查找过程相对于数组这种顺序存储结构来说较为复杂,耗时巨大。
代码片段和文件信息
#include
#include
#include
#define LEN sizeof(Poly)
typedef struct term{
float coef; //系数
int expn; //指数
struct term *next;
}Poly*link;
int LocateElem(link p link s link &q);
void CreatePolyn(link &pint m); //创建多项式
void PrintPolyn(link p); //打印多项式(表示)
int cmp(link a link b);
link AddPolyn(link pa link pb); //多项式相加
link SubPolyn(link pa link pb); //多项式相减
link Reverse(link p); //逆置多项式
link MultiplyPolyn(link Alink B); //多项式相乘
void Calculate(link pfloat x); //多项式求值
int main()
{
link P1P2P3; //多项式
int L1L2; //多项式长度
printf(“ -------------------------------------------------------------------\n“);
printf(“ |================== 一元多项式的运算 =================|\n“);
printf(“ |================== 1.相加(+) =================|\n“);
printf(“ |================== 2.相减(-) =================|\n“);
printf(“ |================== 3.相乘(*) =================|\n“);
printf(“ -------------------------------------------------------------------\n\n“);
printf(“请输入第一个多项式的项数:“);
scanf(“%d“&L1);
CreatePolyn(P1L1);
printf(“第一个多项式为:“);
printf(“P1(X)=“);
PrintPolyn(P1);
printf(“请输入第二个多项式的项数:“);
scanf(“%d“&L2);
CreatePolyn(P2L2);
printf(“第二个多项式为:“);
printf(“P2(X)=“);
PrintPolyn(P2);
printf(“\n“);
printf(“请输入要选择的运算(+ - *): “);
char ch1;
getchar(); //清除掉缓冲区的回车符
scanf(“%c“&ch1);
getchar(); //清除掉缓冲区的回车符
switch(ch1){
case ‘+‘:{
printf(“两个一元多项式相加: “);
printf(“P1(X)+P2(X)=“);
P3=AddPolyn(P1 P2);
PrintPolyn(P3);
}break;
case ‘-‘:{
printf(“两个一元多项式相减: “);
printf(“P1(X)-P2(X)=“);
P3=SubPolyn(P1 P2);
PrintPolyn(P3);
}break;
case ‘*‘:{
printf(“两个一元多项式相乘: “);
printf(“P1(X)*P2(X)=“);
P3=MultiplyPolyn(P1 P2);
PrintPolyn(P3);
}break;
default:printf(“您输入了错误指令 %c !“ch1);
}
char ch2;
printf(“\n是否代入X进行求值?(Y/N): “);
ch2=getchar(); //清除掉缓冲区的回车符
getchar();
switch(ch2){
case ‘Y‘:{
float x;
printf(“\n请输入多项式中X的值:“);
scanf(“%f“&x);
Calculate(P3x);
break;
}
case ‘N‘:break;
default:printf(“你输入了错误指令 %c !“ch2);
}
return 0;
}
int LocateElem(link p link s link &q){
/*遍历链表p,每一个结点与s比较指数,
若相同q指向相同指数项的结点,返回1,
若不相同,根据s所指指数大小在链表p中的位置来确定q的指向结点,返回0
*/
link p1 = p->next;
link p2 = p;
while(p1){
if(s->expn > p1->expn){
p1 = p1->next;
p2 = p2->next;
}else if(s->expn == p1->expn){
q = p1;
return 1;
}else{
q = p2;
return 0;
}
}
if(!p1){
q = p2;
return 0;
}
}
void CreatePolyn(link &pint m)
/*创建带头结点的链表(多项式)
且无论按什么顺序输入,或是有相同指数项
最终在多项式中都是升幂顺序!
*/
{
link sq;
int i;
p=(link)malloc(LEN);
p->next=NULL;
for(i=0;i {
s=(link)malloc(LEN)
- 上一篇:VC++简单多人聊天室源码
- 下一篇:数据结构第三章作业答案参考C语言
相关资源
- C语言嵌入式Modbus协议栈,支持主站和
- 实验报告:数据结构长整数四则运算
- C语言封装的HttpClient接口
- c++多边形交并差运算
- C语言课设计算器
- C语言 学生兴趣管理系统
- c语言实现火车订票系统(控制台)源
- 模拟笔记本电脑(C语言实现)
- c语言实现竞技比赛打分系统
- KMP算法C语言程序
- Linux c语言 学生成绩管理系统
- 弹跳的小球(test.c)
- 林锐—高质量C编程
- 基于c语言的通讯录系统
- C语言全套课件与教学资料-哈工大
- 计算机二级C语言真题.docx
- C语言实现 设备信息管理系统
- GBT 28169-2011 嵌入式软件 C语言编码规范
- C语言标准库函数大全.chm
- C语言常用代码(分章节)
- c语言课程设计:客房登记系统源码
- C语言常用算法源代码
- 吕鑫:VS2015之博大精深的0基础C语言视
- c语言文都讲义2020
- c语言课件56883
- C语言推箱子win控制台
- C语言程序设计50例.docx
- 烟花优化算法(c语言版)
- C语言程序设计教材习题参考答案.do
- 数据结构(C语言版)ppt课件,清华,
评论
共有 条评论