我们的目标:
1、了解线性结构的特点 掌握顺序表的定义、查找、插入和删除
2、掌握链表的定义、创建、查找、插入和删除(持续更新)
3、能够从时间和空间复杂度的角度比较两种存储结构的不同特点及其适用场合(持续更新)
文章目录
总结
一、线性表是什么?
1.1 线性表的定义和特点
线性表的定义:用数据元素的有限序列表示。
1.2 例子分析
例1 分析26个英文组成的英文表
( A, B, C, D, …… , Z)
总结:数据元素都是字母,元素间关系是线性。
例2 分析学生情况登记表
学号 | 姓名 | 性别 | 年龄 | 班级 |
041810205 | 于** | 女 | 18 | 04级计算机1班 |
041810260 | 何** | 男 | 20 | 04级计算机2班 |
041810284 | 王 ** | 女 | 19 | 04级计算机3班 |
041810360 | 王** | 男 | 18 | 04级计算机4班 |
: | : | : | : | : |
总结:数据元素都是记录,元素间关系是线性。
因此,同一线性表中的元素必定具有相同特性。
二、案例分析
2.1 一元多项式的运算
Pn(x) = p0 + p1x + p2x2 + … + pnxn
线性表P = (p0,p1,p2,…,pn)
例如,
P(x) = 10 + 5x - 4x2 + 3x3 + 2x4
指数(下标i) | 0 | 1 | 2 | 3 | 4 |
系数p[i] | 10 | 5 | -4 | 3 | 2 |
数组表示 (每一项的指数i隐含在其系数pi的序号中)
2.2 稀疏多项式的运算
多项式非零项的数组表示
线性表P =((p1, e1), (p2, e2),…,(pm, em))
总结:
顺序存储结构的优点:密度大,存储空间为1,没有浪费。
顺序存储结构存在问题: 存储空间分配不灵活、运算的空间复杂度高;所以就引出链式存储结构。
2.3 图书信息管理系统
功能:(1)查找 (2)插入 (3)删除 (4)修改 (5)排序 (6)计数
图书顺序表
总结:
1、线性表中数据元素的类型可以为简单类型,也可以为复杂类型。
2、许多实际应用问题所涉的基本操作有很大相似性,不应为每个具体应用单独编写一个程序。
3、从具体应用中抽象出共性的逻辑结构和基本操作(抽象数据类型),然后实现其存储结构和基本操作。
三、线性表的类型定义
3.1 线性表的重要基本操作:
1、初始化
2、取值
3、查找
4、插入
5、删除
四、线性表的顺序表示和实现
4.1 线性表的顺序表示和实现
线性表的顺序表示又称为顺序存储结构或顺序映像。
顺序存储定义:把逻辑上相邻的数据元素存储在物理上相邻的存储单元中的存储结构。(逻辑相邻,物理相邻)
顺序存储方法:用一组地址连续的存储单元依次存储线性表的元素,可通过数组V[n]来实现。
下面为大家展示顺序是如何存储的:
4.2 顺序表的类型定义
代码如下(示例):
#define MAXSIZE 100 //最大长度
typedef struct
{
ElemType *elem; //指向数据元素的基地址
int length; //线性表的当前长度
}SqList;
数据结构的表示(存储结构)用类型定义(typedef)描述;数据元素类型约定为ElemType,由用户在使用该数据类型时自行定义。
4.3图书表的顺序存储结构类型定义
代码如下(示例):
#define MAXSIZE 10000 //图书表可能达到的最大长度
typedef struct //图书信息定义
{
char no[20]; //图书ISBN
char name[50]; //图书名字
float price; //图书价格
}Book;
typedef struct
{
Book *elem; //存储空间的基地址
int length; //图书表中当前图书个数
}SqList; //图书表的顺序存储结构类型为SqList
总结
以上就是今天要讲的内容,详细的讲述了线性表的特点和用途,并举出对应案例,希望对大家有所帮助。我还会在线性表中继续更新下去的,我们一起继续加油哇!