0
点赞
收藏
分享

微信扫一扫

2022 数据结构与算法《王道》学习笔记 (六)双链表 考研资料

数据结构与算法系列文章目录


本文内容摘自《王道数据结构》,经自我总结后做成笔记,供学习参考用。

本文部分图片摘自博文

文章目录


前言

单链表结点中只有一个指向其后继的指针,使得单链表只能从头结点依次顺序地向后遍历。要访问某个结点的前驱结点(插入、删除操作时),只能从头开始遍历,访问后继结点的时间复杂度为O(1),访问前驱结点的时间复杂度为O(n)。

为了克服单链表的上述缺点,引入双链表,双链表结点中有两个指针prior和next,分别指向其前驱结点和后继结点。

在这里插入图片描述
双链表中结点类型的描述:

struct DuLNode{                     //定义双链表结点类型
    ElemType data;                 //数据域           
    struct DuLNode *prior,*next;  //前驱和后继指针
}DuLNode, *DuLinkList;


1、双链表的插入操作

在双链表中p所指的结点之后插入结点*s,其指针变化过程
在这里插入图片描述
在这里插入图片描述

  1. s->next=p->next; //将结点s插入到结点p之后
  2. p->next->prior=s;
  3. s->prior=p;
  4. p->next=s;

2.双链表的删除操作

删除双链表中结点p的后继结点q,其指针的变化过程:
在这里插入图片描述
删除操作的代码片段:

p->next=q->next; //图2.11中的步骤①
p->next->prior=p; //图2.11中的步骤②
free(q); //释放结点空间

在这里插入图片描述

3.静态链表

在这里插入图片描述
静态链表结构类型的描述:

在这里插入图片描述

4.顺序表和链表的比较

在这里插入图片描述
在这里插入图片描述


课后习题持续补充

举报

相关推荐

0 条评论