数据结构与算法 第二章线性表(48课时课程笔记)Data Structure and Algorithms

发布时间 2023-12-18 16:53:36作者: SihanG2004

2.1 线性表的类型定义

一个线性表是n个数据元素的有限序列。

 

1)结构初始化 InitList(&L) 构造一个空的线性表L

(2)销毁结构 DestroyList(&L)

3)引用型操作

  (4) 修改型操作

 

 一个算法举例:

假设有两个集合AB分别用两个线性表LALB表示(即:线性表中的数据元素即为集合中的成员),现要求一个新的集合AA∪B,且以线性表表示。

 要求对线性表作如下操作: 扩大线性表LA,将存在于线性表LB中而不存在于线性表LA中的数据元素插入到线性表LA中去。

1 从线性表LB中依次取得每个数据元素:GetElem(LB, i, e )

2 e的值在线性表LA中进行比较:LocateElem(LA, e, equal( ))

3 若不存在,则插入之。ListInsert(LA, n+1, e)

2.2 线性表的顺序表示和实现

1. 顺序表的定义

把线性表的结点按逻辑顺序依次存放在一组地址连续的存储单元里。
随机存取的存储结构。只要确定了存储线性表的起始位置,线性表中的任一数据元素可随机存取。)

2. 线性表的动态分配顺序存储结构(动态一维数组)

 3. 顺序表的操作

1)初始化操作:构造一个空表。设置表的起始位置、 表长及可用空间。

 

2)在线性表中指定位置前插入一个元素

 

 3)在线性表中删除第i个元素

 

 

 

 顺序存储结构的优缺点:

优点

 逻辑相邻,物理相邻

 随机存取任一元素

 存储空间使用紧凑

 缺点

 插入、删除操作需要移动大量的元素

 预先分配空间需按最大空间分配,利用不充分

2.3 线性表的链式表示和实现

2.3.1 线性链表

单链表,结点中只含一个指针域的链表

 

 (感觉这课不是很有必要这么发博客,打算直接在pdf做笔记然后更百度网盘了)