青岛大学_王卓老师【数据结构与算法】Week04_12_案例分析与实现2_学习笔记

news2024/11/13 15:14:43

本文是个人学习笔记,素材来自青岛大学王卓老师的教学视频。

一方面用于学习记录与分享,另一方面是想让更多的人看到这么好的《数据结构与算法》的学习视频。

如有侵权,请留言作删文处理。

课程视频链接:

数据结构与算法基础–第04周12–2.8案例分析与实现2–稀疏多项式运算

📚 【Week04】12_案例分析与实现

稀疏多项式的运算

多项式非零项的数组表示

在这里插入图片描述

线性表 A = ((7, 0), (3, 1), (9, 8), (5, 17));
线性表 B = ((8, 1), (22, 7), (-9, 8));

(1) 创建一个新数组 c

(2) 分别从头遍历比较 a 和 b 的每一项

  • 指数相同,对应系数相加,若其和不为零,则在 C 中增加一个新项

  • 指数不相同,则将指数较小的项复制到 c 中

(3) 一个多项式已遍历完毕时,将另一个剩余项一次复制到 c 中

❓ 数组 c 多大合适呢?

顺序存储结构存在的问题:存储空间分配不灵活,运算的空间复杂度高

链式存储结构

typedef struct PNode{
	float coef;				// 系数
    int expn;				// 指数
    struct PNode* next;		// 指针域
}PNode, *Polynomial;

在这里插入图片描述

【算法描述】多项式创建

void CreatePolyn(Polynomial &P int n)
P=new PNode;P->next=NULL;for(i=1;i<=n;++i) {s=new PNode:cin>>s->coef> >s->expn;pre=P:q=P->next;while(q&&q->expn<s->expn){pre=q;q=q->next;
s->next=q;pre->next=s;

无效创建Polyn(多项式和P,整数n)
P=新的PNode;
下一个=空值;
对于(i=1;i<=n;++i)
S=新的PNode;
CIN>S->Coef>S->EXPN;
pre=P;
Q=P->下一个;
而(q&q->EXPN<S->EXPN){
前=q;q=q-下一个;
9
一个=s;
//输入m项的系数和指数,建立表示多项式的有序链表F
//先建立一个带头结点的单链表//依次输入n个非零项
//生成新结点
//输入系数和指数
//pre用于保存q的前驱,初值为头结点//q初始化,指向首元结点//找到第一个大于输入项指数的项*q
//将输入项s插入到q和其前驱结点pre之间

多项式相加过程

在这里插入图片描述

新的多项式 C

在这里插入图片描述

【算法步骤】多项式相加

(1) 指针 p1 和 p2 初始化,分别指向 Pa 和 Pb 的首元结点。

(2) p3 指向和多项式的当前结点,初值为 Pa 的头结点。

(3) 当指针 p1 和 p2 均未达到相应表尾时,

则循环比较 p1 和 p2 所指结点对应的指数值(p1->expn 与 p2->expn),有下列 3 种情况

  • 当 p1->expn == p2->expn 时,则将两个结点种的系数相加

  • 若和不为零,则修改 p1 所指结点的系数值,同时删除 p2 所指结点。

  • 若和为零,则删除 p1 和 p2 所指结点。

  • 当 p1->expn < p2->expn 时,则应摘取 p1 所指结点插入到 " 和多项式 " 链表中去;

  • 当 p1->expn > p2->expn 时,则应摘取 p2 所指结点插入到 " 和多项式 " 链表中去;

(4) 将非空多项式的剩余段插入到 p3 所指结点之后。

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

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

相关文章

Python+OpenCV人行道盲道边缘侦测识别

程序示例精选 PythonOpenCV人行道盲道边缘侦测识别 如需安装运行环境或远程调试&#xff0c;见文章底部个人QQ名片&#xff0c;由专业技术人员远程协助&#xff01; 前言 这篇博客针对<<PythonOpenCV人行道盲道边缘侦测识别>>编写代码&#xff0c;代码整洁&#x…

使用 Jest 在 Visual Studio Code 中进行更好的单元测试

目录 前言&#xff1a; 使用 Jest 扩展显著改善测试流程 1.自动启动 Jest 测试 2. 显示单个失败/通过的测试用例 允许调试单元测试 在文件中显示代码覆盖率 结论 前言&#xff1a; Jest是一个流行的JavaScript测试框架&#xff0c;它提供了简洁、灵活和强大的工具来编写…

ChatGPT炒股:查询分析某个公募基金的持仓变化

如果很认同某个基金经理的投资理念&#xff0c;可以跟踪基金经理的持仓变化&#xff0c;可以获取一些投资的线索。手动操作也可以实现&#xff0c;但略微麻烦&#xff0c;如果利用ChatGPT写一个跟踪程序&#xff0c;就方便多了。 下面以汇丰晋信副总经理、投资总监、知名基金经…

深入理解java虚拟机精华总结:线程安全与锁优化

深入理解java虚拟机精华总结&#xff1a;线程安全与锁优化 线程安全Java语言中的线程安全不可变绝对线程安全相对线程安全线程兼容线程对立 线程安全的实现方法互斥同步非阻塞同步无同步方案 锁优化自旋锁与自适应自旋锁消除锁粗化轻量级锁偏向锁 线程安全 当多个线程同时访问…

MF30:VBA_清除Excel缓存

我给VBA的定义&#xff1a;VBA是个人小型自动化处理的有效工具。利用好了&#xff0c;可以大大提高自己的工作效率&#xff0c;而且可以提高数据的准确度。我的教程一共九套&#xff0c;分为初级、中级、高级三大部分。是对VBA的系统讲解&#xff0c;从简单的入门&#xff0c;到…

【云原生|Docker系列第1篇】什么?你竟然还不知道Docker?

欢迎来到Docker入门系列的第一篇博客&#xff01;在当今的应用开发和部署领域&#xff0c;Docker已经成为一项极具吸引力的关键技术。本篇博客将为您介绍Docker的基本概念和作用&#xff0c;并解释为什么它成为现代应用开发和部署的终极利器。无论您是开发人员、系统管理员还是…

Java小白的学习之路——day11(静态)

目录 一、java的内存分析 1.java的内存区域 二、静态static 静态属性 静态方法 类加载 什么是类加载&#xff1f; 什么是触发类加载&#xff1f; 一、java的内存分析 1.java的内存区域 java的内存区域有五个区域 i.堆区&#xff1a;存放new的对象、成员遍历、常量池&a…

Yolov5-Lite + Sort算法实现边缘目标跟踪

文章目录 前言项目结构Sort算法实现卡尔曼跟踪器工具类多目标跟踪器 整合 前言 昨天挖了个坑&#xff0c;那么今天的话把坑填上&#xff0c;只要是实现Sort算法和Yolov5-Lite的一个整合。当然先前的话&#xff0c;我们在Yolov3–Tiny的时候&#xff0c;也做了一个&#xff0c;…

Netty实战(一) netty入门之创建echo服务器

目录 一、理论知识1. 网络协议TCP/UDP2. netty简介3. 依赖4. netty核心类介绍 二、开发实战1. 服务端2. 客户端 demo源码参考 一、理论知识 1. 网络协议TCP/UDP TCP、UDP协议属于七层协议中传输层的协议&#xff0c;这两种主流协议的差异&#xff1a; TCP是一个面向连接的、…

ArcGIS Pro遥感影像分类:随机森林、支持向量机方法

本文介绍在ArcGIS Pro软件中&#xff0c;基于随机森林、支持向量机等多种算法&#xff0c;对遥感影像数据加以监督分类的具体方法。 在文章ArcGIS中ArcMap栅格遥感影像的监督分类&#xff08;https://blog.csdn.net/zhebushibiaoshifu/article/details/126905442&#xff09;中…

【已解决】Couldn‘t find a tree builder with the features you requested: lxml

这是一个常见于Python爬虫代码的报错。 报错代码&#xff1a; soup BeautifulSoup(r.text, xml) 报错原因&#xff1a; BeautifulSoup的解析方法之一&#xff0c;xml&#xff0c;需要安装好lxml库才行 解决办法&#xff1a; 安装 lxml 库即可。 pip install lxml 安装好…

HTML的Input(type)的属性都有哪些

&#x1f607;作者介绍&#xff1a;一个有梦想、有理想、有目标的&#xff0c;且渴望能够学有所成的追梦人。 &#x1f386;学习格言&#xff1a;不读书的人,思想就会停止。——狄德罗 ⛪️个人主页&#xff1a;进入博主主页 &#x1f33c;欢迎小伙伴们访问到博主的文章内容&am…

笨笨的刷题日记

关注我&#xff0c;带你一起学习&#xff0c;共同成长。 LeetCode 还记得三年前找实习的时候 leetCode 还是 1000 题左右&#xff0c;现在都飙到 3000 题了&#xff0c;还有前端狗专用的 JavaScript 系列。这个世界真实太疯狂了。 leetCode 部分习题参考答案 正在更新中 标号…

C++primer(第五版)第十五章(面向对象程序设计)

15.1 OOP:概述 面向对象程序设计(object-oriented programming)的核心思想是数据抽象,继承和动态绑定(个人认为应该是多态,但是书里原话是动态绑定,因此不太确定). 一开始,C只是C加上一些面向对象特性.C最初的名称C with Classes 也反映了这个血缘关系 …

摆动排序 II · Wiggle Sort II

链接&#xff1a; 题解&#xff1a; 1.先用partition函数&#xff0c;求得n/2的位置的排序 2.然后选取首尾指针&#xff08;奇数选择1和length-1&#xff0c;偶数选择为1和length-2&#xff09;&#xff0c;进行swap交换 3.每次首指针每次2&#xff0c;尾指针每次-2 九章算…

使用 Sa-Token 实现不同的登录模式:单地登录、多地登录、同端互斥登录

一、需求分析 如果你经常使用腾讯QQ&#xff0c;就会发现它的登录有如下特点&#xff1a;它可以手机电脑同时在线&#xff0c;但是不能在两个手机上同时登录一个账号。 同端互斥登录&#xff0c;指的就是&#xff1a;像腾讯QQ一样&#xff0c;在同一类型设备上只允许单地点登…

Spring:Bean生命周期

Bean 生命周期 生命周期 Bean 生命周期是 bean 对象从创建到销毁的整个过程。 简单的 Bean 生命周期的过程&#xff1a; 1.实例化&#xff08;调用构造方法对 bean 进行实例化&#xff09; 2.依赖注入&#xff08;调用 set 方法对 bean 进行赋值&#xff09; 3.初始化&#x…

IDEA使用教程 安装教程

16. Codota 插件 Codota 插件可以根据使用频率优先显示较常用的类和方法。然而&#xff0c;是否使用该插件取决于个人的偏好。有时工具只能作为参考&#xff0c;仍然需要依靠个人记忆来确保准确性。 17. 快速查看类和字段的注释 按下 F2 键可以快速查看某个类或字段的文档注…

编译运行Secure Value Recovery Service v2

下载项目 git clone https://github.com/signalapp/SecureValueRecovery2.git编译 make dockersh报错 修改Dockerfile ARG PROTOC_GEN_GO_GITREV6875c3d7242d1a3db910ce8a504f124cb840c23a RUN go env -w GOPROXYhttps://goproxy.cn,direct RUN go install google.golang.org/p…

阿里云轻量应用服务器和云服务器的区别

阿里云服务器ECS和轻量应用服务器有什么区别&#xff1f;云服务器ECS是明星级云服务器&#xff0c;轻量应用服务器可以理解为简化版的云服务器ECS&#xff0c;轻量适用于单机应用&#xff0c;云服务器ECS适用于集群类高可用高容灾应用&#xff0c;阿里云百科来详细说下阿里云轻…