双向链表DoublyLinkedList类
双向链表可以往前寻找数据项:单向链表寻值时若错过了值,需要从头开始。
双向链表多了一个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类相关推荐
- 数据结构与算法(四)-双向链表(DoublyLinkedList)
双向链表(DoublyLinkedList)结构 文章目录 双向链表(DoublyLinkedList)结构 一.双向链表的介绍 单向链表的特性 双向链表结构 双向链表的缺点 二.双向链表的封装 常见 ...
- 双向链表List类模板的实现
双向链表List类模板的实现 1.考虑设计时需提供的类 List类本身,它包含连接到表两端的链.表的大小,以及一些方法. Node类,可能是一个私有的内嵌类.一个节点包含数据和指向前后两个节点的两个指 ...
- Python数据结构实战——双向链表(DoublyLinkedList)
文章目录 1.定义结点类 2.定义链表类 2.1.打印正向链表 2.2.打印反向链表 2.3.寻找链表最后一个结点 2.4.计算链表长度 2.5.链表首部插入元素 2.6.链表尾部插入元素 2.7.链 ...
- 双向链表(Doubly Linked List)
双向链表(Doubly Linked List) 1. 双向链表的概念 1.1 双向链表的定义 双向链表又称为双链表,是链表的一种. 1.2 双向链表的结点结构 双向链表的结点包括三个部分:前驱指针域 ...
- 07_JavaScript数据结构与算法(七)双向链表
JavaScript 数据结构与算法(七)双向链表 单向链表和双向链表 单向链表 只能从头遍历到尾或者从尾遍历到头(一般从头到尾). 链表相连的过程是单向的,实现原理是上一个节点中有指向下一个节点的引 ...
- java 双向链表例子_Java双向链表按照顺序添加节点的方法实例_Java_软件编程
分析过程: 首先需要比较待添加的节点编号与已有的节点编号的大小,若待添加的节点编号已经存在,则不能加入.为防止出现空指针的情况,需要对节点的位置进行判断. 示例代码: package linkedli ...
- 双向链表的(CRUD)
代码实现(CRUD) package com.atguigu.linkedlist;/*** @创建人 wdl* @创建时间 2021/3/19* @描述*/ public class DoubleL ...
- 链表(Linked List)之双向链表
双向链表应用实例 使用带head头的双向链表实现 –水浒英雄排行榜 管理单向链表的缺点分析: 单向链表,查找的方向只能是一个方向,而双向链表可以向前或者向后查找. 单向链表不能自我删除,需要靠辅助节点 ...
- 【LeetCode笔记】146. LRU缓存机制(Java、双向链表、哈希表)
文章目录 题目描述 思路 & 代码 LinkedHashMap 的写法 题目描述 大名鼎鼎的超高频面试题 太感动,在这道题上花了太多时间了,今天终于补上博客了TvT 思路 & 代码 结 ...
- java中LinkedList类的操作
LinkedList类是双向链表,单向队列,双向队列,栈的实现类: LinkedList类实现单向队列和双向队列的接口,自身提高了栈操作的方法,链表操作的方法. 在LinkedList类中存在很多方法 ...
最新文章
- mysql优化篇_MySQL优化篇-查询优化
- Android中measure过程、WRAP_CONTENT详解以及xml布局文件解析流程浅析(上)
- Leetcode 217. 存在重复元素 解题思路及C++实现
- 【干货】浅谈分布式数据库中间件之分库分表
- 杨清彦:《像三国》游戏3D动效制作经验分享
- WINDOWS 需要您的当前凭证
- 刘敏:优麒麟开源操作系统运营实践 | DEV. Together 2021 中国开发者生态峰会
- Linux C 数据结构——二叉树
- oracle ndv,CBO_ORACLE
- 每天干的啥?(2017.6)
- SQLServer性能优化专题
- [洛谷P1501][国家集训队]Tree II(LCT)
- Matlab程序转为C++代码
- 最新版c语言经典习题100例(最全面)
- 一个非常好用的批量图片压缩工具
- iOS | Swift图片剪切圆角
- 计算机里pc是什么,什么是pc?pc是什么意思?
- Android UI 模板
- [每日一题] 73. 电话号码(字符串、set)
- 动画讲解直流无刷电机的原理
热门文章
- 学习笔记(1):Echarts+Asp.Net+Sql Server报表开发视频教程-折线图和曲线图
- 几种常用cv工具的颜色通道总结
- win 11bitlocker恢复密匙一般情况的解决方式(这里指的是你现在使用的微软账户一直没有变更过)
- 时间固定效应和个体固定效应的选择_【十分钟计量经济学】面板数据选择固定效应还是随机效应...
- word硬回车是怎么产生的_在word中怎样删除软硬回车?
- VMware的网络连接原理
- GoogleVRForUnity✨一款常用的谷歌VR插件教程
- STM32通过IIC驱动MLX90614红外温度传感器
- 了解下常用分析JVM参数以及优化工具
- php ini 分号,当分号(;)被包含在值中时,用PHP解析INI文件