资源简介
这是使用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语言面试笔试题,经典题目
- C语言编程常见问题解答.pdf
- 操作系统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语言版
川公网安备 51152502000135号
评论
共有 条评论