资源下载地址: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;// 输入多项式1printf("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// 输入多项式2printf("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); // 用缓存中的参数多项式链表p2printf("Input:\nP1 = ");print_polyn(p1); // 输出相加前的p1printf("P2 = ");print_polyn(p2); // 输出相加前的p2printf("Computing...\n");Polyn* psum = add_polyn(p1, p2); // 执行p1+p2printf("Output:\nP1 + P2 =\n");print_polyn(p1);// 输出相加后的p1,证明其未被破坏printf("+\n");print_polyn(p2);// 输出相加后的p2,证明其未被破坏printf("=\n");print_polyn(psum);// 输出多项式和psumdeinit_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