数据结构与算法(第二章)

数据结构和算法(第四次课)

线性表的定义和特点

  • 数据的逻辑结构: 线性结构;
  • 线性结构(线性表,栈(特殊线性表),队列(特殊线性表),字符串、数组、广义表)

线性表是具有相同的数据元素的有序序列

  1. 其中元素的个数被定义为表的长度;
  2. 当n = 0的时候称为空表
  3. 将非空的线性表(n>0)记作:( a1,a2…an)
  4. 数据元素可以表示为ai

顺序存储结构

一. 案例:利用线性表实现一元多项式的加减乘除

  • 例如:p(x) = 10+5x-4x^2 +3x^3+ 2x^4;

  • 用数组来表示

指数下标01234
系数 10 5 -4 3 2
  • 现在进行一元多项式的运算时就只需要对系数进行相加减
  1. 稀疏多项式
  • 例如 p(x) = 1+3x^10000 +2x^20000

  • 稀疏多项式不适合使用上面这种方式来表示,太浪费内存

  • 用数组来表示

数组下标012
指数系数 0 10000 20000
指数 1 3 2
  • 有了线性表,p(x) = 1+3x^10000 +2x^20000可以表示为A = ((0,1),(10000,3),(20000,2))
  1. 稀疏多项式的运算
  • 分别从头遍历比较a和b的每一项
  • 指数相同:对应系数相加,若其和不为0,则在c中新添一项
  • 指数不相同: 将指数较小的项复制到c中即可
  • 一个多项式已遍历完毕的时候,将另一个剩余项依次复制到c中即可
  1. 顺序存储结构存在的问题:
    存储空间分配不灵活
    运算的空间复杂度比较高

二.案例:图书管理系统

  • 需要的功能:查找、插入、删除、修改、排序、计数
  • 可以利用一个线性表来实现
  • 表中每本图书抽象线性表中数据元素

两种方法: 图书顺序表、图书链表

三、线性表的顺序表示和实现

  • 线性表的顺序表示又称为顺序存储结构或顺序映像
  • 顺序存储定义:把逻辑上相邻的数据元素存储在物理上相邻 的存储单元中的存储结构(简而言之:逻辑上相邻,物理上也相邻,占用一片连续的存储单元)
  • 例如利用顺序表顺序存储实现的例子:
#define MAXSIZE 10000

typedef struct{
    char no[20];
    char name[50];
    float price;
}Book;

typedef struct{
    Book * elem;
    int length;
}Sqlist;
 
posted @   jerry-autumn  阅读(72)  评论(0编辑  收藏  举报
相关博文:
阅读排行:
· TypeScript + Deepseek 打造卜卦网站:技术与玄学的结合
· Manus的开源复刻OpenManus初探
· .NET Core 中如何实现缓存的预热?
· 阿里巴巴 QwQ-32B真的超越了 DeepSeek R-1吗?
· 如何调用 DeepSeek 的自然语言处理 API 接口并集成到在线客服系统
点击右上角即可分享
微信分享提示