Chapter 3 Linear Lists

第 3 章 线性表

线性表(List)

零个或多个数据元素的有限序列(有顺序)

引用性操作、加工性操作。

ADT 线性表(List)
Data
    线性表的数据对象集合为{a1,a2,...,an},每个元素的类型均为DataType。
其中,除第一个元素a1外,每一个元素有且只有一个直接前驱元素,除最后一个元素
an外,每一个元素有且只有一个直接后继元素。数据元素之间的关系是一对一的关系。

Operation
    InitList(*L):初始化操作,建立一个空的线性表L;
    ListEmpty(L):若线性表为空,返回true,否则返回false;
    ClearList(*L):将线性表清空;
    GetElem(L,i,*e):将线性表L中的第i个位置元素值返回给e;
    LocateElem(L,e):在线性表L中查找与给定值e相等的元素,如果查找成功,返回该元素在表中序号表示成功;
                    否则,返回0表示失败;
    ListInsert(*L,i,e):在线性表L中第i个位置插入新元素e;
    ListDelete(*L,i,*e):删除线性表L中第i个位置元素,并用e返回其值;
    ListLength(L):返回线性表L的元素个数;
endADT

顺序存储结构数据长度与线性表长度的区别

数组的长度是存放线性表的存储空间的长度。

在任意时刻,线性表的长度应该小于等于数组的长度:即数组的长度表示为线性表的最大长度。

顺序存储结构地址计算方法

存储器中的每个存储单元都有自己的编号,称为地址

公式:

即第i个元素的位置可以由第一个元素的位置加上i-1个存储单元的大小(取决于类型占用多少比特)

线性表存取时间性能为O(1),称为随机存储结构

顺序存储结构的插入与删除

获取元素操作

插入操作

删除操作

顺序表储存结构的优缺点

优点

缺点

  • 无需为表示表中元素之间的逻辑关系而增加额外的存储空间

  • 可以快速地存取表中任意位置的元素

  • 插入和删除操作需要移动大量元素

  • 当线性表长度变化较大时,难以确定存储空间的容量

  • 造成存储空间的“碎片”

线性表的链式存储结构

单链表

n个节点(ai的存储映像)连接成一个链表,即为线性表(a1,a2,a3,……,an)的链式存储结构

链表中第一个结点的存储位置叫做空指针,最后一个节点指针为“NULL”或“^”即空。

  • 有时,为了方便对链表进行操作,会在单链表的第一个结点前附设一个结点,称为头结点。

  • 头结点(数据:可以存线性表长度等公共数据;指针:指向第一个结点)

注意区分:头结点(非必要)、头指针(必要)

单列表的读取

单链表的插入和删除

单链表的插入

复杂度:O(n)寻找结点时的while循环

单链表的删除

单链表的整表创建

顺储存结构的创建相当于数组的初始化,而单链表不一样。

单链表属于一种动态结构,无法预先分配划定所占用空间的大小和位置。

头插法

始终让新结点在第一的位置

尾插法

把每次的新结点都插在终端结点的后面

单链表的整表删除

关于单链表结构和顺序存储结构的经验性结论

  • 若线性表需要频繁查找,很少进行插入和删除操作时,宜采用顺序存储结构

  • 当线性表中的元素个数变化较大或者根本不知道有多大时,最好用单链表结构

静态链表

在C语言的指针还没被发明之前,用数组描述的链表

对数组的第一个最后一个元素作为特殊元素处理,不存数据。我们通常把未被使用的数组元素称为备用链表。而数组的第一个元素,即下标为0的元素的cur就存放备用链表的第一个结点的下标;而数组的最后一个元素(或第二个元素)的cur则存放第一个有数值的元素的下标,相当于单链表中的头结点的作用,当整个链表为空时,则为0。

静态链表的初始化

静态链表的插入操作

由于数组没有malloc()和free()等标准函数,需要自己定义实现

静态链表的删除操作

**关于数据结构的代码太多了...根本打不完...所以关于《大话数据结构》后面课程的代码我都不打算打了...好好理解,然后记下一些重点就好了。

循环链表

循环链表的尾结点的指针指向首结点,即单链表形成循环。这样可以方便地从任意一个结点访问所有结点

双向链表

是在单链表地每个结点中,再设置一个指向其前驱结点的指针域,可以同时方便的访问到任意结点的前驱结点或者后继结点。

  • 但在进行链表的插入、删除操作时,需要更改两个指针。

  • 双向链表的删除:结点之间删除顺序不影响结果

总结

线性表包括

  • 顺序存储结构

  • 链式存储结构(单链表、静态链表、循环链表、双向链表)

Last updated