当前位置: 首页 > news >正文

7. 线性表的定义及特点

本节主要讲了线性表的几个案例和存储方式。

本文部分ppt、视频截图来自:[青岛大学-王卓老师的个人空间-王卓老师个人主页-哔哩哔哩视频]

1. 线性表案例

1.1 一元多项式的运算:实现两个多项式加、减、乘运算

在这里插入图片描述

  • 计算和的多项式

指数相同的项的系数依次相加

在这里插入图片描述

  • 指数项并不是每一项都有,大部分项系数为0的多项式稀疏多项式,如果还按照下标依次存储的话,会造成极大空间浪费。
  • 为了减少空间浪费,只需要存储系数不为0的项。

在这里插入图片描述

1.2 稀疏多项式的运算

  • 稀疏多项式

只存储系数不为0的项,存放系数和指数。

在这里插入图片描述
在这里插入图片描述

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

  • 创建一个新数组C
  • 分别从头遍历比较a和b的每一项
    在这里插入图片描述
  • 一个多项式已遍历完毕时,将另一个剩余项依次复制到c中即可(问题:数组c定义多大合适?
    在这里插入图片描述
  • 存储空间分配

用链表存储:从头分别遍历A、B两个多项式。从第一项开始比较两个多项式的指数,A的是0,B的是1,A的指数较小,所一保留A的第一项。

在这里插入图片描述

比较A、B第二项的指数,都是1,求两个的和11更新到表中

在这里插入图片描述

再比较下一项,A的指数是8,B的指数是7,保留较小的7存储

在这里插入图片描述

再比较下一项,A、B都是8,系数求和为0,该项不要。此时多项式B中没有元素项了,将多项式A中剩余项依次存入

在这里插入图片描述

2.3 图书信息管理系统

一个图书馆有如下文件:需要功能①查找 ②插入 ③删除 ④修改 ⑤排序 ⑥计数。该问题同样可以用线性表来解决

  • 图书表抽象为线性表
  • 表中每本图书抽象为线性表中的数据元素

在这里插入图片描述

存储图书表:顺序表 或者 链表。
选择哪个存储结构需要参考实际情况,比较两种情况异同,各自好处,然后:

  • 选择适当的存储结构
  • 实现此存储结构上的基本操作(增删查改等)
  • 利用基本操作完成功能

在这里插入图片描述
在这里插入图片描述

2.4 总结

  • 线性表中的数据元素的类型可以为简单类型,也可以为复杂类型
  • 许多实际应用问题所涉的基本操作有很大相似性,不应为每个具体应用单独编写一个程序。
  • 从具体应用中抽象出共性的逻辑结构和基本操作(抽象数据类型),然后实现其存储结构和基本操作。

相关文章:

  • 天津网站公司如何制作网页链接教程
  • 做网站的实训报告微信推广软件
  • 利用万网做网站肇庆网站建设制作
  • 给企业做宣传网站的好处推广是做什么工作的
  • 今科网站建设公司推广资源整合平台
  • 为什么网站要用外链/精准营销平台
  • Java并发编程面试题
  • Python应用break初解
  • 普中STM32F103ZET6开发攻略(六)
  • 快速幂(迭代和递归)
  • 任意类加载环境下注入内存马
  • Unity优化篇之DrawCall
  • Vue.js 生命周期全面解析
  • 宁乡地-气-碳-水相互作用综合观测数据集
  • 香港科技大学(广州) | 生命科学与生物医学工程学域博士夏令营报名召集!
  • 基于JWT+SpringSecurity整合一个单点认证授权机制
  • 在UI界面内修改了对象名,在#include “ui_mainwindow.h“没更新
  • 探索Python融合地学:斗之气三段
  • 深度解构Vue3响应式内核:Proxy魔法与依赖追踪的极致艺术
  • 1.4 编译库:静态库、动态库
  • Java并发容器和原子类
  • caliper中的测试文件写法及其注意事项
  • 谷歌云代理商 | 游戏行业专属方案:谷歌云实时多人游戏服务器架构
  • 在Windows下利用LoongArch-toolchain交叉编译Qt
  • C++编程——关于比较器的使用
  • 五子棋网络对战游戏的设计与实现设计与实现【源码+文档】