双向链表:
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));
}
分享到:
相关推荐
区块链和双链表 学习区块链和双链表 谢谢michielmulders我通过michielmulders在这个中学到了区块链,还有一个不错的博客,我推荐这个
var link = $("<a href='javascript:void(0)' class='page-link' data-page-no='" + i + "'>" + i + "</a>"); if (i === currentPage) { link.addClass("active"); } pagination.append(link); } } ``` ### ...
.content_list{padding-bottom:30px!important;height:606px!important;} ``` 这里定义了背景色、字体大小等样式规则。 ### 总结 以上是对“简单翻页代码”的相关内容进行的详细分析。从文档类型定义到具体的HTML...
1. 选取视图的列的内容 @Trim @DbColumn 6 2. 隐藏判断常用的命令 6 3. 判断当前用户是否是“某个组”的成员,然后来显示和隐藏 6 4. 在Lotus Domino 中显示图 6 ...122. Stop double form submissions 308
Lotus Domino WEB 开发技术积累-DOC(313页) 1. 选取视图的列的内容 @Trim @DbColumn 6 2. 隐藏判断常用的命令 6 ...3. 判断当前用户是否是“某个组”的成员,然后来显示和...122. Stop double form submissions 308
List<FileItem> items = upload.parseRequest(request); for (FileItem item : items) { if (!item.isFormField()) { file = item.getFile(); fileContentType = item.getContentType(); fileFileName = item...
<link href="~/Content/easyui/themes/material/easyui.css" rel="stylesheet" /> ~/Scripts/jquery.min.js"> ~/Scripts/easyui.min.js"> 数据表格" class="easyui-datagrid" style="width:100%;height:450px...
list-style: none; margin: 0; padding: 0; } ``` #### 7. 透明度设置 在设置元素的透明度时,IE 和 Firefox 有不同的语法: ```css /* IE */ filter: progid:DXImageTransform.Microsoft.Alpha(style=0, ...
Checkboxes in a list box - **实现方法**: 在列表框中添加复选框,并使用脚本来处理用户的输入。 #### 48. Formatting a Notes view in HTML table for WEB - **格式化方法**: 通过自定义视图的列公式或使用...
javascript中(function($){...})(jQuery)写法是指的是是匿名函数。 function(arg){...}这也定义了一个匿名函数,参数为arg。 测试样例参见test/AnonymousFunction.html .navbar-fixed-top使导航条固定在顶部 Index...
You can use the dialog to navigate to each instance by double-clicking on one of the result lines... Scripting Access to the Clipboard How to access the Clipboard using the integrated scripting ...
Pages in a b+tree are usually implemented as a list or array of child pointers and so while finding and inserting a value is a O(log k) operation the process actually has to move children around in ...
`DesiredCapabilities` 可以用来设置浏览器的特性,如是否启用 JavaScript、是否无头模式等: ```python capabilities = DesiredCapabilities.CHROME.copy() capabilities['acceptInsecureCerts'] = True ``` **...
- 在CSS中,`this`关键字可以表示当前元素,但更多是在JavaScript中使用。 **Inline(行内)** - 显示模式之一,元素与其他元素在同一行显示。 - 可以通过`display: inline`属性实现。 **Hidden(隐藏)** - 使...
虽然不是CSS专用词汇,但在JavaScript等编程语言中使用广泛。 - **Fixed**: 固定定位。CSS中的`position:fixed`属性用于固定元素在视口中的位置,即使页面滚动也不会移动。 - **Four**: 四个。数量词,可用于描述CSS...
`5.84d`是一个双精度(double)浮点数常量,而`float`类型的变量应该赋值为单精度(float)浮点数。正确的写法应该是`float t = (float) 5.84d;` 或者 `float t = 5.84f;`。 #### 三、运算符和表达式 1. **switch语句...