双向链表:
doubleLink = function(){
this.head = null;
this.feild = null;
this.size= 0;
this.head = {};
//return a empty double link list
this.head.next = this.head;
this.head.before = this.head;
};
doubleLink.prototype.isBefore = function(a, b){
//is a before b?
var listItem = a;
while (listItem != b) {
listItem = listItem.next;
if (listItem == this.head) {
return false;
}
}
return true;
};
doubleLink.prototype.insert = function(/*Object*/item,/*Object*/ targetItem,/*Boolen*/ before){
if (!targetItem) {
var listItem = this.head.next;
if (listItem == this.head) {
//insert first node
this.head.next = item;
this.head.before = item;
item.before = this.head;
item.next = this.head;
}
else {
//insert node at the last position
listItem = this.head.before;
listItem.next = item;
item.before = listItem;
this.head.before = item;
item.next = this.head;
}
}
else {
if (!before) {
//insert after targetItem
item.next = targetItem.next;
item.next.before = item;
targetItem.next = item;
item.before = targetItem;
}
else {
//insert before targetItem
item.before = targetItem.before;
item.before.next = item;
targetItem.before = item;
item.next = targetItem;
}
}
this.size++;
};
doubleLink.prototype.remove = function(/*Object*/item){
item.before.next = item.next;
item.next.before = item.before;
item.next = null;
item.before = null;
this.size--;
};
doubleLink.prototype.removeAll = function(){
var listItem = this.head.next;
while (listItem != this.head) {
listItem.before = null;
listItem = listItem.next;
listItem.before.next = null;
}
listItem.before.next=null;
this.head.next=this.head;
this.head.before=this.head;
this.size = 0;
};
doubleLink.prototype.size = function(){
return this.size;
};
doubleLink.prototype.showAll = function(){
//just for test.
var position = 0;
var str = '';
var listItem = this.head.next;
while (listItem != null) {
str += position + ':' + listItem.node.id + ';';
listItem = listItem.next;
position++;
}
console.info('show all:' + str);
};
//test double linklist
function start(){
var ss0={};
var ss1={};
var ss2={};
var ss3={};
var list = new doubleLink();
list.insert(ss0);
list.insert(ss2);
list.insert(ss3);
list.insert(ss1);
console.info(list.isBefore(ss3,ss1));
}
分享到:
相关推荐
javascript array list into setjavascript array list into setjavascript array list into setjavascript array list into setjavascript array list into setjavascript array list into setjavascript array ...
调用com控件时,当控件的接口参数为DATE时,javascript相应转换方法。
javascript 模拟 java中的 List,Map js文件为 js/utils.js IE6.0 测试通过 <br>List: add(var obj) //添加一个元素 remove(var index) //删除一个元素 get(var index) //获取一个元素 remove...
使用java语言实现16位内存数据转化为double型
webpack拆分压缩css并以link导入的操作步骤 import $ from 'jquery' import './css/index.css' import './less/index.less' $(function () { $('#app li:nth-child(odd)').css('color', 'red') $('#app li:...
本文实例讲述了JavaScript动态创建link标签到head里的方法。分享给大家供大家参考。具体分析如下: 相信有很多做前端的朋友碰到过需要用 JavaScript 动态创建样式表标签——link标签。这里我们就来说说如何在浏览器...
double.js 具有31个准确的十进制数字(106位)的浮点展开,也称为双精度双精度算术或模拟float128。 该库对于扩展精度的快速计算很有用。 例如,在轨道力学,计算几何和数值不稳定算法中,例如执行三角剖分,多边形...
javascript帮助文档javascript帮助文档javascript帮助文档javascript帮助文档javascript帮助文档javascript帮助文档javascript帮助文档javascript帮助文档javascript帮助文档javascript帮助文档
JavaScript应用实例-list隔行变色.js
用于创建可定制的Maker链接JavaScript库 是所有Pieter Levels(@levelsio)网站右下方的小巧,醒目的按钮。 单击后,该按钮将打开一个新选项卡,并导航到他的个人网站 。 该库使您可以轻松自定义自定义网站并将其...
Link Saver App using JavaScript with Free Source Code
javascript将list转换成树状结构的实例.docx
javascript完全自学手册 目 录 第1篇 JavaScript基础篇 第1章 JavaScript简介 1 1.1 JavaScript概述 1 1.1.1 什么是JavaScript 1 1.1.2 JavaScript的基本特点 2 1.1.3 常用的Web开发语言 3 1.2 JavaScript的应用 4 ...
JavaScript手册 JavaScript手册 JavaScript手册
NULL 博文链接:https://chengxj-1986.iteye.com/blog/825123
A SMALL JavaScript control widget I wrote to move items between two unordered lists with sorting function.
JavaScript
前端开源库-doublearray双数组trie的Doublearray、javascript实现
<div id="app"> <router-link to='home'>首页</router-link> <router-link to='about'>关于</router-link> <router-view a=1><router-view/> </div> router-view组件 export default { //函数式组件没有...
一个简单的 JavaScript 函数,可自动将 HTML 页面中的所有国家和州列表插入为标签,这意味着下拉列表。易于在您的项目中使用!