数据结构(2) -- 线性表的顺序表示

本文详细介绍了线性表的两种主要表示方法——顺序表示和链式表示,包括它们的基本操作、时间复杂度及优缺点。顺序表示适用于快速存取,而链式表示则在插入和删除操作上更占优势。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

2.2 线性表的顺序表示

  1. 顺序表基本操作:

    1. 插入操作:最坏情况O(n),最好情况O(1),平均情况O(n)

    2. 删除操作:最坏情况O(n),最好情况O(1),平均情况O(n)

    3. 按值查找:最坏情况O(n),最好情况O(1),平均情况O(n)

 

2.3 线性表的链式表示

  1. 头结点:在单链表第一个结点之前附加一个结点,称头结点。头结点的数据域可以不设任何信息,也可以记录表长等相关信息。

    • 引入头结点优点:

      • 链表第一个位置操作和其他位置一致,无须进行特殊处理

      • 无论链表是否为空,头指针都指向头结点的非空指针,空表和非空表处理统一

  2. 单链表操作:

    1. 头插法建立:插入时间O(1),设链表长度n,总时间复杂度O(n)

    2. 尾插法建立:同头插

    3. 按序号查找结点值:时间复杂度O(n)

    4. 按值查找表结点:时间复杂度O(n)

    5. 插入结点操作:查找复杂度O(n),插入复杂度O(1)

    6. 删除节点操作:查找复杂度O(n),删除复杂度O(1)

    7. 求表长操作:复杂度O(n)

  3. 双链表:指向前驱节点和后继结点

  4. 循环链表:最后一个结点的指针指向头结点

  5. 循环双链表:头结点的前驱指针指向尾结点

  6. 静态链表:借助数组描述链式结构,指针域存放结点的数组下标,静态链表也要预先分配一块连续的内存空间

  7. 顺序表和链表的比较:

    • 存取方式:顺序表可以顺序和随机存取,链表只能从表头存取

    • 逻辑结构和物理结构:顺序表逻辑相邻,物理位置也相邻;链表逻辑相邻,物理位置不一定相邻

    • 查找、插入和删除元素:

      • 对按值查找:顺序表无序时,两者都O(n),顺序表有序时,折半查找O(log2n)

      • 按序号查找:顺序表O(1),链表O(n)。顺序表插入删除平均要移动半个表长元素,链表插入三删除只修改相关结点的指针域即可。链表存储密度小,因为有指针存储。

    • 空间分配:顺序表需要预先分配足够大的存储空间;链式存储的结点空间在需要时分配,操作灵活

  8. 顺序存储同样适用图和树的存储

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值