资源下载地址:https://download.csdn.net/download/sheziqiong/85996014
资源下载地址:https://download.csdn.net/download/sheziqiong/85996014
1.实验目的
- 了解链式存储结构的基本知识;
- 掌握算法思想和数据结构的描述;
- 结合一元多项式相加的运算规则。
2.实验环境
硬件:Intel Core™ i5-8300H CPU 2.30GHZ
软件:Windows10 家庭中文版 64位操作系统;Visual Studio 2019 集成开发环境
3.实验内容
结合书上第41页的例子,采用链式存储结构,将两个线性链表表示的一元多项式相加,并输出。此一元多项式遵循多项式相加运算规则:对于两个一元多项式中存在指数相同的项时,其对应系数相加。合并后系数和为零时,删除“和多项式”中此项;合并后系数和不为零时,则构成“和多项式”中的一项。对于两个一元多项式中存在的指数不相同的项,则分别复抄到“和多项式”中去,原多项式保持不变。
4.实验程序
4.1 程序源代码
文件名:main.c
#include <stdio.h>
#include "polyn.h"
/// 从stdin取得多项式的参数,格式:项数N 系数1 指数1 系数2 指数2 ...... 系数N 指数N
void get_polyn_parameters(unsigned* n, double coef[], int expn[]);
/// 主函数
int main()
{
// 缓存
int expn[10] = { 0 };
double coef[10] = { 0 };
unsigned n;
// 输入多项式1
printf("Enter polynomial 1. Format: N coef1 expn1 coef2 expn2 ... coefN expnN\n");
get_polyn_parameters(&n, coef, expn); // 从stdin取得参数,保存到缓存
Polyn* p1 = init_polyn(n, coef, expn); // 用缓存中的参数创建多项式链表p1
// 输入多项式2
printf("Enter polynomial 2. Format: N coef1 expn1 coef2 expn2 ... coefN expnN\n");
get_polyn_parameters(&n, coef, expn); // 从stdin取得参数,保存到缓存
Polyn* p2 = init_polyn(n, coef, expn); // 用缓存中的参数多项式链表p2
printf("Input:\nP1 = ");
print_polyn(p1); // 输出相加前的p1
printf("P2 = ");
print_polyn(p2); // 输出相加前的p2
printf("Computing...\n");
Polyn* psum = add_polyn(p1, p2); // 执行p1+p2
printf("Output:\nP1 + P2 =\n");
print_polyn(p1);// 输出相加后的p1,证明其未被破坏
printf("+\n");
print_polyn(p2);// 输出相加后的p2,证明其未被破坏
printf("=\n");
print_polyn(psum);// 输出多项式和psum
deinit_polyn(p1); // 回收内存
deinit_polyn(p2);
deinit_polyn(psum);
}
/// 从stdin取得多项式的参数,格式:项数N 系数1 指数1 系数2 指数2 ...... 系数N 指数N
void get_polyn_parameters(unsigned* n, double coef[], int expn[])
{
scanf("%ud", n);
*n = *n % 10;
for (size_t i = 0; i < *n; i++) {
scanf("%lf %d", coef + i, expn + i);
}
}
5.程序运行结果截图
资源下载地址:https://download.csdn.net/download/sheziqiong/85996014
资源下载地址:https://download.csdn.net/download/sheziqiong/85996014