数据结构课程设计一元稀疏多项式计算器

news2024/11/18 6:26:38

数据结构课程设计任务书

学生姓名:            专业班级:

指导教师:             工作单位:

题  目: 一元稀疏多项式计算器                                     

基础要求:

一元稀疏多项式简单计算器的基本功能是:

(1) 输入并建立多项式 ;

(2) 输出多项式,输出形式为整数序列:n,cl,el,c2,e2,…,cn,en,其中n是多项式的项数,ci 和ei,分别是第 i 项的系数和指数,序列按指数降序排列;

(3) 多项式ab相加,建立多项式a +b

(4) 多项式ab相减,建立多项式a -b

主要任务:

(1)设计一个一元稀疏多项式简单计算器。

(2)用带表头结点的单链表存储多项式。

(3)撰写课程设计报告

时间安排:

内容                  天数             地点

构思及收集资料          1              机房

编码与调试              3              机房

撰写论文                1              图书馆、机房

指导教师签名:                      年    月    日

 

目录

一元稀疏多项式计算器............................... 1

一、问题分析和任务定义.............................. 1

1.1 课程目的....................................... 1

1.2 任务需求....................................... 1

二、 数据结构的选择和概要设计........................ 2

2.1一元多项式的建立................................ 2

2.2创建一个一元多项式............................... 2

2.3 多项式相加...................................... 2

2.4 多项式相减...................................... 3

三、 编码实现..................................... 4

3.1一元多项式的建立................................ 4

3.2创建一个一元多项式............................... 4

3.3打印多项式...................................... 5

3.4 多项式相加...................................... 5

3.5 多项式相减...................................... 6

四、实验结果测试结果及其分析......................... 7

4.1调试分析........................................ 7

五、参考文献..................................... 10

完整资料私信我:

 

一元稀疏多项式计算器

一、问题分析和任务定义

1.1 课程目的

设计一个一元稀疏多项式简单计算器。

1.2 任务需求

基本要求:

(1) 输入并建立多项式 ;

(2) 输出多项式,输出形式为整数序列:n,cl,el,c2,e2,…,cn,en,其中n是多项式的项数,ci 和ei,分别是第 i 项的系数和指数,序列按指数降序排列;

(3) 多项式ab相加,建立多项式a +b

(4) 多项式ab相减,建立多项式a -b

测试数据:

(1)(2x+5x8-3.1x11) + (7-5x8+11x9)=(-3.lx11+11x9+2x+7)

(2)(6x-3-x+4.4x2-1.2x9) -(-6x-3+5.4x2-x2+7.8x15)

=(-7.8x15-1.2x9+12x-3-x)

(3)(1 +x + x2+x3+x4+x5)+(-x3-x4)=(1+x+x2+x5)

(4)(x+x3)+(-x-x3)=0

(5)(x+x100)+(x100 +x200)=(x+2x100+x200)

(6)(x+x2+x3)+0=x+x2+x3

(7) 互换上述测试数据中的前后两个多项式

  • 数据结构的选择和概要设计

2.1一元多项式的建立

使用带头结点的单链表存储多项式,插入查找和删除较为方便。数据域中存 储系数和指数,指针域指向下一个节点的位置。

 

2.2创建一个一元多项式

  1. 首先确定好多项式的项数m新建立一个节点node用来存贮读入的系    数coef和项数expn

(2)再使用尾插法来添加多项式的每一项,如果输入的系数是0,就不存储该       项。

2.3 多项式相加

  1. 建立三个多项式PaPbPc,其中Pc用于存放前两个多项式的和。
  2. 指针p1p2初始化,分别指向PaPb首节点的下一个节点,P3指向和多项式的头节点
  3. 当指针p1p2均未达到表尾时,则循环比较p1p2所指节点对应的指

数值。

 

     (p1->expn与p2->expn),有下列三种情况:

  1. 当p1->expn==p2->expn时,则将两个节点中的系数相加

    *若和不为0,则把p1与p2的系数相加,存到p3指向的节点,再把p1或p2的指数存到p3中,全部向后移动一个节点。

*若和为0,则p1和p2向后移动一个节点。

  1. 当p1->expn<p2->expn时,则应摘取p2所指的节点插入到p3指向的节    点中。
  2. 当p1->expn>p2->expn时,则则应摘取p1所指的节点插入到p3指向的    节点中。
  1. 将非空多项式的剩余段插入到p3所指的节点。

2.4 多项式相减

多项式的相减实现起来步骤相对简单,只需要把多项式Pb中每一项的系数取反,再相加就可以了。

  1. 初始化p2与node节点分别指向多项式Pb的第一项。
  2. 用node节点使Pb每一项的系数取反。
  3. 再调用多项式相加函数,计算结果放在Pc里。
  4. 最后用p2把Pb中每一项的系数还原。
  • 编码实现

3.1一元多项式的建立

结构体的定义

3.2创建一个一元多项式

3.3打印多项式

void PrintPolyn(LS *h)

{

    LS *p = h;

    int count = 1;            //设置一个变量用于控制打印符号

    while (p->next != NULL)

    {

        p = p->next;

        if (count != 1 && p->coef > 0//打印符号

        {

            printf("+");

        }

        if (p->expn == 0) // 如果指数为0只打印系数

        {

            printf("%g", p->coef);

        }

        else if (p->expn == 1)

        {

            printf("%gx", p->coef);

        }

        else

        {

            printf("%gx^%d", p->coef, p->expn);

        }

        count++;

    }

    printf("\n");

}

3.4 多项式相加

多项式相加的代码如下:

 

3.5 多项式相减

多项式相减代码部分:

四、实验结果测试结果及其分析

4.1调试分析

注:本次测试多项式的输入和输出都是按照指数的降序排列的。

测试数据:


(1)(2x+5x8-3.1x11) + (7-5x8+11x9)=(-3.lx11+11x9+2x+7)

(2)(6x-3-x+4.4x2-1.2x9) -(-6x-3+5.4x2-x2+7.8x15)

=(-7.8x15-1.2x9+12x-3-x)

 

  1. (1 +x + x2+x3+x4+x5)+(-x3-x4)=(1+x+x2+x5)

 

 

(4)(x+x3)+(-x-x3)=0

 

  1. (x+x100)+(x100 +x200)=(x+2x100+x200)

(6)(x+x2+x3)+0=x+x2+x3

 

  • 参考文献
  1. 严蔚敏.数据结构C语言版[M].清华大学出版社,2007.
  2. 董丽薇.“数据结构课程教学方法的改进[J].沈阳师范大学学报(自然科学版)2012.
  3. WingJM.ComputationalThinking.CommunicationsoftheACM200649(3)33-35.
  4. MarkM.Meerschaert.数学建模方法与分析[M].2.刘来福,杨淳,黄海洋,译.北京:机械工业出版社,2005.
  5. 刘昕,石乐义,元雪东.面向计算思维的数据结构课程教学改革[J].计算机教育,2013(196)1635-38.
  6. 姚诗斌.数据库系统基础.计算机工程与应用,1981 年第8
  7. 王昆仑,李红.数据结构与算法.北京:中国铁道出版社,20065
  8. 范德宝,于晓聪,丁伟祥.提高数据结构课程教学效果的探讨[J].黑龙江科技信息,2007.
  9. 高贤强,化希耀,陈立平.引入计算思维的《数据结构》教学改革研究[J].现代计算机:专业版,2015
  10. 潘彦.算法设计与分析基础[M].北京:清华大学出版社,2007.1

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/554685.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

C++ 基础学习5

C 基础学习5 std::variantstd::remove、erasestd::string::erasestd::filesystemconst和constexpr的区别coreDump和异常的区别 实战 std::variant 参考&#xff1a;https://blog.csdn.net/hang_ning/article/details/123826220 https://blog.csdn.net/janeqi1987/article/deta…

SpringBoot使用-基于Idea搭建WebSocket应用

文章目录 前言搭建WebSocket应用的实操流程验证总结前言 SpringBoot是所有基于Spring开发项目的起点,使得开发者能快速搭建 Spring 项目。在Idea集成工具环境下,通过使用SpringBoot,开发人员选用合适的Maven设置,能够方便地搭建WebSocket应用。 搭建WebSocket应用的实操流…

Elastic Stack

一、简介 ELK是一个免费开源的日志分析架构技术栈总称&#xff0c;官网https://www.elastic.co/cn。包含三大基础组件&#xff0c;分别是Elasticsearch、Logstash、Kibana。但实际上ELK不仅仅适用于日志分析&#xff0c;它还可以支持其它任何数据搜索、分析和收集的场景&#…

推荐5款简单实用的win10小工具

今天要给大家推荐5款压箱底的宝贝软件了&#xff0c;百度搜索一下就能找到下载链接了。 1.笔记与知识管理——Evernote Evernote是一款功能强大的笔记管理工具,它可以帮助你记下生活中的点点滴滴并进行管理。这个工具拥有简洁的界面和强大的功能,可以添加文本、图片、录音、网…

tomcat maxThread 压力测试 700 并发以内最好

以前一直简单的认为多线程高效率。其实多线程本身并不能提高 cpu 效率&#xff0c;线程过多反而会降低 cpu 效率。当 cpu 核心数<线程数时&#xff0c;cpu 就需要在多个线程直接来回切换&#xff0c;以保证每个线程都会获得 cpu 时间&#xff0c;即通常我们说的并发执行。所…

基于python的WEIBO热点话题检测

微博是一个拥有海量用户的社交媒体平台&#xff0c;每天都会涌现出大量的话题和热点讨论。本文将介绍如何使用Python来实现微博热点话题检测技术&#xff0c;通过对微博文本的分析和处理&#xff0c;准确地捕捉到当前最热门的话题。 1. 数据获取 为了进行微博热点话题的检测&…

部门来了个测试开发,听说是00后,上来一顿操作给我看呆了...

公司新来了个同事&#xff0c;听说大学是学的广告专业&#xff0c;因为喜欢IT行业就找了个培训班&#xff0c;后来在一家小公司实习半年&#xff0c;现在跳槽来我们公司。来了之后把现有项目的性能优化了一遍&#xff0c;服务器缩减一半&#xff0c;性能反而提升4倍&#xff01…

快速上手MATLAB:科研、工程、数据分析,MATLAB入门(上)教你基础知识!+分享MATLAB完全学习手册资料(视频+课件+代码

快速上手MATLAB&#xff1a;科研、工程、数据分析&#xff0c;MATLAB入门&#xff08;上&#xff09;教你基础知识&#xff01; 福利&#xff1a;文末有资料分享&#xff01;&#xff01; 前言零基础的人学matlab&#xff0c;需要哪些基础知识&#xff1f; 一、认识MATLAB1. MA…

【Flutter 工程】001-Flutter 状态管理:Riverpod

【Flutter 工程】001-Flutter 状态管理&#xff1a;Riverpod 文章目录 【Flutter 工程】001-Flutter 状态管理&#xff1a;Riverpod一、概述1、官方状态管理2、状态管理解决方案3、为什么选择 RiverpodRiverpod 官方文档Riverpod 提供的几种 Provider 二、官方示例1、安装2、官…

Linux中vim编辑器

目录 Linux中vim编辑器 学习vim的原因 vim的三种模式 命令模式 输入模式 末行模式 模式切换方法 模式的常用命令 命令模式 --- 光标移动 命令模式 --- 赋值、粘贴、删除 命令模式 --- 文件内容查找 命令模式 --- 撤销编辑及保存退出 末行模式 --- 保存文件及退出vi…

探究企业角色权限管理的重要性及实践方法

角色权限管理是企业网盘工具中的重要功能。它是指将特定角色分配给用户&#xff0c;然后根据用户的工作要求为这些角色分配访问权限的过程。通过使用基于角色的权限&#xff0c;组织可以确保员工只能访问执行工作职责所需的文件和文件夹。那么企业角色权限管理有必要吗&#xf…

提高测试效率,用封装自动化框架实现Web页面自动滚动!

目录 前言&#xff1a; 一、什么是Web自动化框架&#xff1f; 二、为什么需要封装&#xff1f; 三、自动页面滚动功能实现原理 四、封装代码实现 五、总结 前言&#xff1a; Web自动化是现代软件开发过程中的重要组成部分&#xff0c;为了提高开发效率&#xff0c;开发人…

【限时开放!99元交个朋友】ChatGPT AIGC研讨社拉新!

前言 不知道你是否有这样的困惑&#xff1a;想探索ChatGPT的奥秘&#xff0c;却不知道如何入手&#xff1f;想让ChatGPT助力学习工作&#xff0c;却不知如何调教&#xff1f;想在AI浪潮中勇立潮头&#xff0c;却找不到学习路径&#xff1f;怀揣创新想法&#xff0c;却不知如何…

【广州华锐互动】数字孪生编辑器:简单高效的可视化管理系统编辑工具

广州华锐互动开发的数字孪生编辑器&#xff0c;是一款基于数字孪生技术的可视化建模工具&#xff0c;通过将现实世界中的对象数字化&#xff0c;以虚拟现实的方式展现在计算机屏幕上&#xff0c;使用户可以进行模拟、预测和优化实际场景中的操作。 数字孪生编辑器已在工业、建…

【博士论文latex写作】

1.安装编译器 到官网下载镜像&#xff1a;https://mirrors.hit.edu.cn/CTAN/systems/texlive/Images/ 选择 texlive2023.iso 也可选择百度云2022版本&#xff1a; 链接&#xff1a;https://pan.baidu.com/s/1WLVX8Zn1E4hIYRupLBabNA?pwdgm63 提取码&#xff1a;gm63 打开后…

8.防火墙-SNAT和DNAT

文章目录 SNAT-内网客户访问外网服务原理操作实验 DNAT-外网客户访问内网服务原理操作实验 tcpdump SNAT-内网客户访问外网服务 原理 由内网到外网&#xff1a;从内网发到外网的数据包的源IP由私网IP转换成公网IP 由外网到内网&#xff1a;从外网发到内网的数据包的目的IP由公…

自动驾驶成为汽车产业未来趋势,连接器行业迎来进一步发展

连接器的应用范围越来越广泛&#xff0c;从汽车、工业、医疗、消费电子、通信、计算机到航空航天&#xff0c;几乎所有的领域都使用连接器。 以汽车行业为例&#xff0c;一辆燃油汽车通常需要几百到上千个连接器&#xff0c;而电动汽车则需要更多&#xff0c;因为需要连接电池…

iptables防火墙(二)

iptables防火墙&#xff08;二&#xff09; 一、SNAT策略1、SNAT策略简述2、配置实验 二、DNAT策略1、DNAT策略简述2、配置实验 三、Linux抓包工具tcpdump四、防火墙规则保存 一、SNAT策略 1、SNAT策略简述 SNAT策略就是将从内网传给外网的数据包的源IP由私网IP转换成公网IP&…

软考——邻接矩阵

数组(邻接矩阵)表示法 建立一个顶点表(记录各个顶点信息)和一个邻接矩阵(表示各个顶点之间关系)。 设图A=(V,E)有n个顶点,则图的邻接矩阵是一个二位数组A.arcs[n][n],定义为:

【现场问题】oracle,schema = metaData.getConnection().getSchema()报错

oracle获取Schema报错 问题描述折磨我的地方版本的问题 jar冲突 问题描述 折磨我的地方 版本的问题 ojdbc8&#xff0c;问题是我一直都是这个版本&#xff0c;我换了大小版本都不可以&#xff01;&#xff01;&#xff01;&#xff01; jar冲突 我怎么找得到这个jar的冲突呢…