考研数据结构笔记(4)

考研数据结构笔记(4)_第1张图片

链表(链式存储)

  • 单链表
    • 定义
    • 基本操作的实现
      • 单链表的插入
        • 按位序插入
        • 指定节点的前插
        • 指定节点的后插
      • 单链表的删除
    • 小结

单链表

定义

考研数据结构笔记(4)_第2张图片

考研数据结构笔记(4)_第3张图片

顺序表优点:可随机存取,存储密度高,缺点:要求大片连续空间,改变容量不方便。
单链表优点:不要求大片连续空间,改变容量方便,缺点:不可随机存取,要耗费一定空间存放指针。

定义单链表的代码:
考研数据结构笔记(4)_第4张图片
定义数据领和指针域

定义一个新节点
考研数据结构笔记(4)_第5张图片

定义typedef关键字来缩短函数书写麻烦
考研数据结构笔记(4)_第6张图片

所以综上定义单链表有两种方式
考研数据结构笔记(4)_第7张图片
要表示一个单链表时,只需声明一个头指针L,指向单链表的第一个结点
LNode * L; //声明一个指向单链表第一个结点的指针,或者LinkList L;//声明一个指向单链表第一个结点的指针,后者代码可读性更强。

  • 强调这是一个单链表–使用 LinkList
  • 强调这是一个结点–使用LNode*
  • 二者本质相同,都用于定义一个类型为单链表的指针

考研数据结构笔记(4)_第8张图片

初始化一个不带头节点的单链表:

考研数据结构笔记(4)_第9张图片
初始化一个带头节点的单链表:
考研数据结构笔记(4)_第10张图片

考研数据结构笔记(4)_第11张图片

基本操作的实现

考研数据结构笔记(4)_第12张图片

单链表的插入

考研数据结构笔记(4)_第13张图片

按位序插入

带头结点插入
考研数据结构笔记(4)_第14张图片
考研数据结构笔记(4)_第15张图片

不带头结点插入
考研数据结构笔记(4)_第16张图片
考研数据结构笔记(4)_第17张图片

指定节点的前插
  • 法1:用已知头指针来遍历链表插入
    考研数据结构笔记(4)_第18张图片
  • 法2:用已知p节点后插入数据来转移数据(时间复杂度为O(1))

考研数据结构笔记(4)_第19张图片

指定节点的后插

考研数据结构笔记(4)_第20张图片
考研数据结构笔记(4)_第21张图片

单链表的删除

  • 法1:用已知头指针来遍历链表删除
    考研数据结构笔记(4)_第22张图片
    考研数据结构笔记(4)_第23张图片
  • 法2:用已知p节点删除数据(时间复杂度为O(1))(且p节点不能为最后一个节点)
    考研数据结构笔记(4)_第24张图片

小结

考研数据结构笔记(4)_第25张图片

你可能感兴趣的:(考研数据结构,考研,数据结构,笔记)