数据结构与算法(第二章)
数据结构和算法(第四次课)
线性表的定义和特点
- 数据的逻辑结构: 线性结构;
- 线性结构(线性表,栈(特殊线性表),队列(特殊线性表),字符串、数组、广义表)
线性表是具有相同的数据元素的有序序列
- 其中元素的个数被定义为表的长度;
- 当n = 0的时候称为空表
- 将非空的线性表(n>0)记作:( a1,a2…an)
- 数据元素可以表示为ai
顺序存储结构
一. 案例:利用线性表实现一元多项式的加减乘除
-
例如:p(x) = 10+5x-4x^2 +3x^3+ 2x^4;
-
用数组来表示
指数下标 | 0 | 1 | 2 | 3 | 4 |
---|---|---|---|---|---|
系数 | 10 | 5 | -4 | 3 | 2 |
- 现在进行一元多项式的运算时就只需要对系数进行相加减
- 稀疏多项式
-
例如 p(x) = 1+3x^10000 +2x^20000
-
稀疏多项式不适合使用上面这种方式来表示,太浪费内存
-
用数组来表示
数组下标 | 0 | 1 | 2 |
---|---|---|---|
指数系数 | 0 | 10000 | 20000 |
指数 | 1 | 3 | 2 |
- 有了线性表,p(x) = 1+3x^10000 +2x^20000可以表示为A = ((0,1),(10000,3),(20000,2))
- 稀疏多项式的运算
- 分别从头遍历比较a和b的每一项
- 指数相同:对应系数相加,若其和不为0,则在c中新添一项
- 指数不相同: 将指数较小的项复制到c中即可
- 一个多项式已遍历完毕的时候,将另一个剩余项依次复制到c中即可
- 顺序存储结构存在的问题:
存储空间分配不灵活
运算的空间复杂度比较高
二.案例:图书管理系统
- 需要的功能:查找、插入、删除、修改、排序、计数
- 可以利用一个线性表来实现
- 表中每本图书抽象线性表中数据元素
两种方法: 图书顺序表、图书链表
三、线性表的顺序表示和实现
- 线性表的顺序表示又称为顺序存储结构或顺序映像
- 顺序存储定义:把逻辑上相邻的数据元素存储在物理上相邻 的存储单元中的存储结构(简而言之:逻辑上相邻,物理上也相邻,占用一片连续的存储单元)
- 例如利用顺序表顺序存储实现的例子:
#define MAXSIZE 10000
typedef struct{
char no[20];
char name[50];
float price;
}Book;
typedef struct{
Book * elem;
int length;
}Sqlist;
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· TypeScript + Deepseek 打造卜卦网站:技术与玄学的结合
· Manus的开源复刻OpenManus初探
· .NET Core 中如何实现缓存的预热?
· 阿里巴巴 QwQ-32B真的超越了 DeepSeek R-1吗?
· 如何调用 DeepSeek 的自然语言处理 API 接口并集成到在线客服系统