双向链表(double linked list)中每个元素都是一个对象,每个对象有一个关键字key与两个指针:next and prev。next指向链表的后一个元素,prev指向前驱元素。

单链接的链表(singly linked)省略每个链表的prev指针

循环链表(circular list)表头元素的prev指针指向表尾元素,表尾元素的next指向表头元素。

现假设所处理的链表是未排序且双链接的。

哨兵

哨兵在链表中是一个重要的概念,哨兵是一个哑对象,作用是简化边界条件的处理,他使一个常规的双向链表变成一个有哨兵的双向循环链表。哨兵L.nil的next指向L.head, L.prev指向L.tail, 同样的,L.tail的next指向L.nil,L.head的prev指向L.nil.

这样,便没有了L.head的描述,而变成了L.nil.next, 同样的, L.tail也变成了L.nil.prev.

使用哨兵虽然不能降低渐进时间界,但可以使代码简洁。

链表_第10章_基本数据结构_算法导论相关推荐

  1. 探花交友_第10章_实现推荐功能

    探花交友_第10章_实现推荐功能 文章目录 探花交友_第10章_实现推荐功能 1.了解推荐系统 1.1.什么是推荐系统? 1.2.电商是推荐系统的先行者 1.3.推荐系统业务流程 1.4.协同过滤推荐 ...

  2. 探花交友_第10章_搭建后台系统(新版)

    探花交友_第10章_搭建后台系统(新版) 文章目录 探花交友_第10章_搭建后台系统(新版) 1.1 概述 1.2 API网关 1.2.1 搭建网关 依赖 引导类 跨域问题配置类 配置文件 测试 1. ...

  3. 系统架构师学习笔记_第六章(下)_连载

    系统架构师学习笔记_第六章(下)_连载 6.3 基于 UML 的软件开发过程 6.3.1  开发过程概述 UML 是独立于软件开发过程的,能够在几乎任何一种软件开发过程中使用.迭代的渐进式软件开发过程 ...

  4. 第四章 串(数据结构与算法)

    第四章 串[数据结构与算法] 配套资源下载 第4章串 4.1应用实例 4.2串及其运算 4.2.1串的基本概念 4.2.2 串的基本运算 4.3串的存储结构及实现 4.3.1 定长顺序串 4.3.2 ...

  5. 给定一个n节点的二叉树,写出一个O(n)时间非递归过程,将该树每个节点关键字输出,可以使用一个栈作为辅助数据结构(算法导论第十章10.4-3)

    给定一个n节点的二叉树,写出一个O(n)时间非递归过程,将该树每个节点关键字输出,可以使用一个栈作为辅助数据结构 (算法导论第十章10.4-3) template<typename T> ...

  6. 第10章 基础API与常见算法

    第10章 基础API与常见算法 学习目标 了解数学相关API 了解日期时间API 了解系统类API 掌握数组基础算法 掌握数组工具类的使用 熟练掌握String类的API 熟练掌握StringBuil ...

  7. Python数据结构与算法(1.1)——数据结构与算法导论

    Python数据结构与算法(1.1)--数据结构与算法导论 0. 学习目标 1. 数据结构概述 1.1 什么是数据结构 1.2 逻辑结构和物理结构 1.3 抽象数据类型 1.4 数据结构学习的必要性 ...

  8. java 判断 框架类型_第10章-验证框架 --- 验证器类型

    第10章-验证框架 --- 验证器类型 可以把验证器分为两个类型: 字段验证器和动作验证器. 字段验证器:只验证提交的表单内的单个字段. 动作验证器:一般验证提交的表单内多个字段的关系.(比如,录入产 ...

  9. 明解C语言入门篇_第10章_指针

    前言 本文为业余学习<明解C语言入门篇>的记录,包含代码清单和练习题. 开始学习时间:2022年8月21日 +++++++++++++++++++++++++++++++ 第1章 初识C语 ...

  10. 简单线性回归截距假设检验_第10章 简单线性回归分析思考与练习参考答案

    第10章 简单线性回归分析 思考与练习参考答案 一.最佳选择题 1.如果两样本的相关系数r1?r2,样本量n1?n2,那么( D ). A. 回归系数b1?b2 B.回归系数b1?b2 C. 回归系数 ...

最新文章

  1. 删除字符串最后一个字符的几种方法
  2. UDEV管理RAC共享存储
  3. 10个利用Eclipse调试Java的常见技巧
  4. php7.0 yield,PHP7中生成器的新特性 yield-from amp;amp; return-values
  5. java 英文字符串排序_英文字符串排序算法
  6. oracle中substrb用法,oracle中substr和instr的用法
  7. 使用 CodeIgniter 框架快速开发 PHP 应用(一)
  8. Martin Odersky Scala编程公开课 第一周作业
  9. Kali Linux 无线渗透测试入门指南 翻译完成!
  10. Chap6:风险与监督[《区块链中文词典》维京甲子]
  11. ps使用脚本生成fnt
  12. 87.3 laravel中常见问题以及解决方案
  13. F28335的DSP中主频的配置
  14. pycharm破解补丁激活
  15. linux find工作原理,Linux基础教程:find 与 xargs
  16. 辐射强度和辐射亮度_如何在“辐射4”中隐藏“创意俱乐部新闻”垃圾邮件
  17. Excel利用公式向导快速设置成绩的评级系统!
  18. Markdown语法快速入门(印象笔记)(从入门到精通,只有一步之遥)
  19. 【c语言】有符号机器数之间怎么比较大小?
  20. PAT 1085 PAT单位排行 (Microsoft_zzt)

热门文章

  1. “Git 是我用过最笨重的软件”!喷完 C++ 喷 Git,这位 Azure CTO 到底何许人也?...
  2. GitHub中Android开源项目及库汇总
  3. 浅析SSRF原理及利用方式
  4. 一个计算机有几个cpu,为什么电脑都只有一个CPU
  5. 开发通用资料——常用接口引脚定义
  6. CF808E Selling Souvenirs
  7. java 中 webcam类_如何在Java的Swing应用程序中集成Webcam?
  8. WorkFlow工作流
  9. 程序员买房前后对比,看完后已哭瞎...
  10. Android 沉浸式模式