首页 > 代码库 > 数据结构(严蔚敏、吴伟民)——读书笔记-2、 线性表及其基本运算、顺序存储结构

数据结构(严蔚敏、吴伟民)——读书笔记-2、 线性表及其基本运算、顺序存储结构

第二章   线性表

2.1    线性表及其基本运算


2.2    线性表的顺序存储结构


2.3    线性表的链式存储结构



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



直接前驱元素、直接后继元素,n = 0时,称为空表。


一个数据元素能够有若干个数据项组成。

在这样的情况下,常把数据元素称为记录。含有大量记录的线性表又称为文件



2、基本运算

InitList(&L)         初始化操作 设定一个空的线性表L


ListLength(L) 求长度函数 函数值为线性表L中数据元素的个数


GetElem(L,i。&e)  取元素函数 1<=i <=Length(L)时返回L中第i个数据元素给e。否 则为空元素NULL。

i称为该数据元素在L中的位序。


PriorElem(L,cur_e。&pre_e)  前驱函数 cur_e是L中的一个数据元素,若它的位序大于1,则函数 值为cur_e前驱pre_e,否则为NULL


NextElem(L。cur_e,&next_e 求后继元素 cur_e的位序小于表长,则函数值为elm的后继 next_e否则为NULL


LocateElem(L,e,compare()) 定位函数 给定值e,若e不在表中,则返回0。否则返回e在表 中第一次出现时的位序


ListInsert(&L,i。e) 前插操作 在第i个元素之前插入新元素b,i的取值范围为: 1<=i<=n+1。i=n+1表示在表尾插入。n为表长


ListDelete(&L,i,e) 删除操作 删除线性表L中的第i个元素。1<=i<=n,并用e返回 其值


ListEmpty(L) 判空表函数 若L为空表。则返回布尔值”true“,否则返回布尔 值“false”


ClearList(&L) 表置空操作 将L置为空表 



3、线性表的顺序存储结构


线性表的顺序存储结构指的是用一组地址连续的存储单元依次存储线性表的数据元素。


Loc(ai) = Loc(a1) + (i - 1) *k



4、线性表的插入和删除操作


 线性表的动态分配顺序存储结构

技术分享


技术分享


为顺序表添加一个大小为存储LISTINCREMENT个数据元素的空间。


技术分享技术分享


插入算法的思路:


> 假设插入位置不合理,抛出异常;

> 假设线性表长度大于等于数组长度,则抛出异常或者动态添加容量;

> 从最后一个元素開始向前遍历到第 i 个位置。分别将它们都向后移动一个位置;

> 将要插入的元素填入位置 i 处。

> 表长加 1。



算法:

技术分享

技术分享





删除算法的思路:


> 假设删除位置不合理。抛出异常。

> 取出删除元素。

> 从删除元素位置開始遍历到最后一个元素位置,分别将他们都向前移动一个位置。

表长减 1。


技术分享


算法:

技术分享

技术分享

技术分享

技术分享



插入算法和删除算法的时间复杂度都为 O(n)














数据结构(严蔚敏、吴伟民)——读书笔记-2、 线性表及其基本运算、顺序存储结构