带有哨兵的双向循环链表
有哨兵的双向循环链表:
双向链表有前驱与后继,循环链表有表尾指向表头,那么带哨兵就是从表头直接指向表尾
即:
head.next 为第一个元素
head.next.prev 为最后一个元素
我们从以下几个方面分析这种链表:
- 重要方法分析
- 全部代码
package com.list;/*** 有哨兵的双向循环链表:* 双向链表有前驱与后继,循环链表有表尾指向表头,那么带哨兵就是从表头直接指向表尾* 即 head.next.prev = 最后一个元素* <p>* head.next 为第一个元素* head.next.prev 为最后一个元素*/
public class CirDoubLinkedWithSent implements ILinkedList {LinkedNode head;@Overridepublic void insert(int key) {LinkedNode node = new LinkedNode(key);if (isEmpty()) {head.next = node;head.next.next = node;head.next.prev = node;} else {//把 node 的逻辑弄通node.next = head.next;node.prev = head.next.prev;//处理最后的一个节点的指向问题head.next.prev.next = node;head.next.prev = node;//将 node 真正的放入链表head.next = node;}}@Overridepublic int delete() {assert !isEmpty();int key = head.next.prev.key;head.next.prev = head.next.prev.prev;head.next.prev.prev.next = head.next;return key;}@Overridepublic boolean isEmpty() {return head.next == null;}public CirDoubLinkedWithSent() {head = new LinkedNode(-1);}
}
带有哨兵的双向循环链表相关推荐
- C++实现有哨兵的双向循环链表
C++实现有哨兵的双向循环链表: #include<iostream> #include<stack> using namespace std; template<cla ...
- 【数据结构】- 几个步骤教你认识并实现一个链表之带头(哨兵位)双向循环链表(中)
文章目录 前言
- 【数据结构】- 几个步骤教你认识并实现一个链表之带头(哨兵位)双向循环链表(上)
文章目录 前言
- 双向循环链表的插入与删除
关于解释部分不再多说了,网上资料很多,下面就介绍具体的实现吧 //双向循环链表的插入与删除 typedef struct node{ int data; struct node *pr ...
- 【数据结构】带头节点双向循环链表
目录 顺序表和链表的区别 带头双向循环链表分析 带头双向循环链表结构: 创建一个节点 哨兵位头节点 打印链表中的值 在pos前插入 删除pos位置的节点 尾插 尾删 头插: 头删 链表元素查找 总代码 ...
- 数据结构:带头双向循环链表——增加、删除、查找、修改,详细解析
读者可以先阅读这一篇:数据结构--单链表的增加.删除.查找.修改,详细解析_昵称就是昵称吧的博客-CSDN博客,可以更好的理解带头双向循环链表. 目录 一.带头双向循环链表的处理和介绍 1.带头双向循 ...
- 实现简单的带头双向循环链表
双向链表 1. 带头双向循环链表的定义 2. 带头双向循环链表的创建 3. 带头双向循环链表的增删改查 (1)头插头删 (2)尾插尾删 (3)pos位置的前插与删除 4.插入与删除改良 1. 带头双向 ...
- 数据结构-线性表之带头结点的双向循环链表
文章目录 前言 实现 (1)结构定义 (2)基本函数 (3)操作实现 测试 代码 前言 链表的类型有很多种(根据带头或不带头,循环或非循环等等),但是我们重点研究的只有两种,一种结构非常简单是无头单向 ...
- 单链表、循环链表、双向循环链表总结
链表介绍 结点的概念: 一个结点包含两个信息,一个是数据域和一个是指针域: 数据域存储该结点的数据信息 指针域存储其直接后继的位置,其示意图如下: 链表的概念: 每个结点的存储单元是独立的,若干个结点 ...
最新文章
- sql 双分区查询_优化案例 | 分区表场景下的SQL优化
- Majority Element(169) Majority Element II(229)
- Java反序列化json内存溢出_反序列化JSON时出现线程错误
- 黑客秘笈-渗透测试实用指南 第三版
- perl脚本中的特殊字符也与V字符串
- JFinal自动扫描表绑定model(包含jar包扫描)
- Linux快速构建apache web服务器
- Oracle系统表大全(转)
- Vue源码:虚拟DOM和diff算法
- 概率生成模型-朴素贝叶斯(Naive Bayes)
- WPF ICommandSource Implementations Leak Memory!
- php5.4 无法连接mongo,php连接MongoDB总是失败,为什么?
- [2018.10.25 T3] 旅程
- PUN搭建大厅与网络同步
- python对excel数据分析常用功能(一文学会如何用Python实现excel基础功能)
- Android硬件加速
- 基于单片机的功放protues_基于单片机的音乐播放器设计
- linux geos 动态库,未经sudo许可在linux上安装GEOS库
- 应变式传感器的原理与优点
- 【task09】集合运算---内连结
热门文章
- mac 不显示 外接屏幕_Mac外接屏幕亮度调整
- UE4移动平台上基于物理的着色
- Mybatis Interceptor 拦截器
- 计算机中的数学【线性代数】向量空间的概念
- Apache Kafka
- dedecms后台崩溃或者后台访问慢的解决方法
- 网络安装centos5.4
- html5shiv.js css3,Modernizr, html5shiv, ie7.js, and CSS3 Pie. Which to use and when?
- MATLAB学习笔记(十六)
- MATLAB学习笔记(十一)