双向链表可以往前寻找数据项:单向链表寻值时若错过了值,需要从头开始。

双向链表多了一个tail值,尾巴;

***向双向链表插入一个值:

this.insert=function(position,  element){

if(position>=0&&position<this.length){
var node=new Node(element);  // 先插入一个值,马上再把这个值和链表连接在一起;

var current=head;

previous;

var index=0;

if(position==0)  //插入第一个位置

{

if(!head){ //如果列表为空

node=head;

node=tail;

}else{  // 如果列表不为空

node.next=current;

current.prev=node;//新增加的

head=node;}

}else if(position==length){  //插入最后一个位置

current=tail;

current.next=node;

node.prev=current;

tail=head;

}else{ //插入位置在中间

while(index<position){

previous=current;
current=current.next;

index++;

}

node.next=current;

previouds.next=node;

current.prev=node;  //新增的

node.prev=previous; //新增的

}}

lenth++;

return true;

}else{

return false;

}};

***从任意位置移除值:
this.removeAt=function(position){
if(position>=0&&podition<length){

var  current=head;

var index=0;
if(position===0){

head=current.next;

//如果只有一项,更新tail //新增的

if (length === 1){ // {2}

tail = null;  } else {

head.prev = null; // {3}

}

}else if(position===length-1){

current=tail;

tail=current.prev;

tail.next = null; }

else{

while(index<position){

previous=current;

current=current.next;

index++}

previous.next=curren.next;

current.next.prev=previous; //此时current的值仍然是要被删除的值,还未曾改变,如果令current=current.next;则current值改变;

}

length--;

return current.element;

else{return null;}

}

双向链表DoublyLinkedList类相关推荐

  1. 数据结构与算法(四)-双向链表(DoublyLinkedList)

    双向链表(DoublyLinkedList)结构 文章目录 双向链表(DoublyLinkedList)结构 一.双向链表的介绍 单向链表的特性 双向链表结构 双向链表的缺点 二.双向链表的封装 常见 ...

  2. 双向链表List类模板的实现

    双向链表List类模板的实现 1.考虑设计时需提供的类 List类本身,它包含连接到表两端的链.表的大小,以及一些方法. Node类,可能是一个私有的内嵌类.一个节点包含数据和指向前后两个节点的两个指 ...

  3. Python数据结构实战——双向链表(DoublyLinkedList)

    文章目录 1.定义结点类 2.定义链表类 2.1.打印正向链表 2.2.打印反向链表 2.3.寻找链表最后一个结点 2.4.计算链表长度 2.5.链表首部插入元素 2.6.链表尾部插入元素 2.7.链 ...

  4. 双向链表(Doubly Linked List)

    双向链表(Doubly Linked List) 1. 双向链表的概念 1.1 双向链表的定义 双向链表又称为双链表,是链表的一种. 1.2 双向链表的结点结构 双向链表的结点包括三个部分:前驱指针域 ...

  5. 07_JavaScript数据结构与算法(七)双向链表

    JavaScript 数据结构与算法(七)双向链表 单向链表和双向链表 单向链表 只能从头遍历到尾或者从尾遍历到头(一般从头到尾). 链表相连的过程是单向的,实现原理是上一个节点中有指向下一个节点的引 ...

  6. java 双向链表例子_Java双向链表按照顺序添加节点的方法实例_Java_软件编程

    分析过程: 首先需要比较待添加的节点编号与已有的节点编号的大小,若待添加的节点编号已经存在,则不能加入.为防止出现空指针的情况,需要对节点的位置进行判断. 示例代码: package linkedli ...

  7. 双向链表的(CRUD)

    代码实现(CRUD) package com.atguigu.linkedlist;/*** @创建人 wdl* @创建时间 2021/3/19* @描述*/ public class DoubleL ...

  8. 链表(Linked List)之双向链表

    双向链表应用实例 使用带head头的双向链表实现 –水浒英雄排行榜 管理单向链表的缺点分析: 单向链表,查找的方向只能是一个方向,而双向链表可以向前或者向后查找. 单向链表不能自我删除,需要靠辅助节点 ...

  9. 【LeetCode笔记】146. LRU缓存机制(Java、双向链表、哈希表)

    文章目录 题目描述 思路 & 代码 LinkedHashMap 的写法 题目描述 大名鼎鼎的超高频面试题 太感动,在这道题上花了太多时间了,今天终于补上博客了TvT 思路 & 代码 结 ...

  10. java中LinkedList类的操作

    LinkedList类是双向链表,单向队列,双向队列,栈的实现类: LinkedList类实现单向队列和双向队列的接口,自身提高了栈操作的方法,链表操作的方法. 在LinkedList类中存在很多方法 ...

最新文章

  1. mysql优化篇_MySQL优化篇-查询优化
  2. Android中measure过程、WRAP_CONTENT详解以及xml布局文件解析流程浅析(上)
  3. Leetcode 217. 存在重复元素 解题思路及C++实现
  4. 【干货】浅谈分布式数据库中间件之分库分表
  5. 杨清彦:《像三国》游戏3D动效制作经验分享
  6. WINDOWS 需要您的当前凭证
  7. 刘敏:优麒麟开源操作系统运营实践 | DEV. Together 2021 中国开发者生态峰会
  8. Linux C 数据结构——二叉树
  9. oracle ndv,CBO_ORACLE
  10. 每天干的啥?(2017.6)
  11. SQLServer性能优化专题
  12. [洛谷P1501][国家集训队]Tree II(LCT)
  13. Matlab程序转为C++代码
  14. 最新版c语言经典习题100例(最全面)
  15. 一个非常好用的批量图片压缩工具
  16. iOS | Swift图片剪切圆角
  17. 计算机里pc是什么,什么是pc?pc是什么意思?
  18. Android UI 模板
  19. [每日一题] 73. 电话号码(字符串、set)
  20. 动画讲解直流无刷电机的原理

热门文章

  1. 学习笔记(1):Echarts+Asp.Net+Sql Server报表开发视频教程-折线图和曲线图
  2. 几种常用cv工具的颜色通道总结
  3. win 11bitlocker恢复密匙一般情况的解决方式(这里指的是你现在使用的微软账户一直没有变更过)
  4. 时间固定效应和个体固定效应的选择_【十分钟计量经济学】面板数据选择固定效应还是随机效应...
  5. word硬回车是怎么产生的_在word中怎样删除软硬回车?
  6. VMware的网络连接原理
  7. GoogleVRForUnity✨一款常用的谷歌VR插件教程
  8. STM32通过IIC驱动MLX90614红外温度传感器
  9. 了解下常用分析JVM参数以及优化工具
  10. php ini 分号,当分号(;)被包含在值中时,用PHP解析INI文件