• 《大话数据结构》笔记(3-2)--线性表的链式存储结构:单链表


    单链表的Java实现代码:
     

    第三章 线性表

    线性表的链式存储结构
     n个结点链结成一个链表,即为线性表(a1a2, ..., an)的链式存储结构,因为链表的每个节点中只包含一个指针域,所以叫做单链表。
     
     
    头指针
    链表中第一个结点的存储位置叫做头指针,最后一个结点指针为NULL
     
    头结点
    有时,为了更方便的对链表进行操作,会在单链表的第一个结点前附设一个结点,称为头结点。头结点的数据域可不存储任何信息,也可存储如线性表的长度等附件信息,头结点的指针域指向第一个结点的指针。
     
    头指针和头结点的异同
     
    线性表链式存储结构代码描述
    若线性表为空表,则头结点的指针域为NULL
     
    简化的链表表示图如下:
    1. 头指针型的单链表
     2. 带有头结点的单链表
     3. 空链表
     C语言中可用结构指针来描述单链表,如下:
     
     
     
    单链表的读取:最坏情况的时间复杂度为O(n)
     
    其核心思想就是“工作指针后移”。
     
     
    单链表的插入与删除
    插入:时间复杂度O(n)
    1. 插入链表中段
     
     
     2. 插入到表头或表尾
    与上同
     算法思路与代码实现:
     
    删除:时间复杂度O(n)
     
     
    算法思路与代码实现:
     
    注:
    如果不知道第i个元素的指针位置,单链表数据结构在插入和删除操作上,与线性表的顺序存储结构是没太大优势的。但如果,我们希望从第i个位置插入10个元素,对顺序存储结构来说,每一次插入都需要移动n-i个元素,每次都是O(n);而对单链表来说,我们只需要在第一次找到第i个位置的指针,此时为O(n),接下来只是简单的通过赋值移动指针而已。
    综上,对于插入或删除数据越频繁的操作,单链表的效率优势越是明显。
     
     
    单链表的整表创建
    1. 头插法
     
    2. 尾插法
     
     
    单链表的整表删除
     
     
    单链表结构与顺序存储结构优缺点
     经验总结:
    1. 若线性表需要频繁查找,很少进行插入和删除操作时,宜采用顺序存储结构。若需要频繁插入和删除时,宜采用单链表结构。
    2. 当线性表中的元素个数变化较大或者根本不知道有多大时,最好用单链表结构,这样可以不需要考虑存储空间的大小问题。
  • 相关阅读:
    HDU4666+POJ2926【最远曼哈顿距离】
    IOS学习之路九(配置restful webservice 框架restkit)
    vb.net 模拟UDP通信
    微信公众平台开发之万能表单
    学习Qt,Getting started
    spring的xml配置文件出现故障
    POJ 1731 Orders(STL运用)
    hiho1080 更为复杂的买卖房屋姿势
    Linux学习笔记(三):系统执行级与执行级的切换
    数据结构之哈希表
  • 原文地址:https://www.cnblogs.com/lyu0709/p/6770309.html
Copyright © 2020-2023  润新知