js实现双向链表互联网机顶盒实战应用实现
js实现双向链表互联网机顶盒实战应用实现
发布时间:2016-12-30 来源:查字典编辑
摘要:上实战代码:linkedlistnode.js节点类复制代码代码如下:/**链表节点*/Dare.LinkedListNode=functi...

上实战代码:

linkedlistnode.js 节点类

复制代码 代码如下:

/*

* 链表节点

*/

Dare.LinkedListNode = function () {

this.data = null;//数据域

this.prev = null;//前驱

this.next = null;//后驱

};

Dare.extend(Dare.LinkedListNode, Dare);

Dare.LinkedListNode.prototype.getValue = function () {

return this.data;

};

Dare.LinkedListNode.prototype.setValue = function (obj) {

this.data = obj;

};

Dare.LinkedListNode.prototype.getPrev = function () {

return this.prev;

};

Dare.LinkedListNode.prototype.setPrev = function (node) {

this.prev = node;

};

Dare.LinkedListNode.prototype.getNext = function () {

return this.prev;

};

Dare.LinkedListNode.prototype.setNext = function (node) {

this.prev = node;

};

linkedlist.js 链表类

复制代码 代码如下:

/*

* 双向链表

*/

Dare.LinkedList = function () {

this.head = null;

this.current = null;

this.tail = null;

this.length = 0;

};

Dare.extend(Dare.LinkedList, Dare);

/*

* 尾插法添加节点

*/

Dare.LinkedList.prototype.appendNode = function (node) {

if (this == null) return;

if (node == null) return;

var tail = this.tail;

if (tail == null) {

this.tail = this.head = node;

}

else {

tail.next = node;

node.prev = tail;

this.tail = node;

}

this.length++;

};

/*

* 删除节点

*/

Dare.LinkedList.prototype.moveNode = function (node) {

if (this == null) return;

if (node == null) return;

//中间节点

var prev = node.prev;

if (prev != null) {

prev.next = node.next;

}

if (node.next != null) {

node.next.prev = prev;

}

//头节点

if (node == this.head) {

this.head = node.next;

}

//尾节点

if (node == this.tail) {

if (prev != null) {

this.tail = prev;

}

else {

this.head = this.tail;

}

}

node.prev = null;

node.next = null;

this.length--;

};

/*

* 构造节点

*/

Dare.LinkedList.prototype.constructNode = function (node, obj) {

if (node == null || obj == null) return;

node.data = obj;

return node;

};

/*

* 获取节点数据

*/

Dare.LinkedList.prototype.getNodeData = function (node) {

if (node == null) return;

return node.data;

};

/*

* 从头开始

*/

Dare.LinkedList.prototype.start = function () {

if (this == null) return;

return this.current = this.head;

};

/*

* 从尾开始

*/

Dare.LinkedList.prototype.end = function () {

if (this == null) return;

return this.current = this.tail;

};

/*

* 下个节点

*/

Dare.LinkedList.prototype.nextNode = function () {

if (this == null) return;

if (this.current == null) return

var node = this.current;

this.current = this.current.next;

return node;

};

/*

* 上个节点

*/

Dare.LinkedList.prototype.prevNode = function () {

if (this == null) return;

if (this.current == null) return

var node = this.current;

this.current = this.current.prev;

return node;

};

/*

* 链表是否空

*/

Dare.LinkedList.prototype.isempty = function () {

if (this == null) return true;

if (this.head == null) {

return true;

}

else {

return false;

}

};

/*

* 链表长度

*/

Dare.LinkedList.prototype.getLength = function () {

if (this == null) return;

return this.length;

};

/*

* 清空链表

*/

Dare.LinkedList.prototype.clearList = function () {

this.head.next = null;

this.head = null;

};

/*

* 是否存在节点

*/

Dare.LinkedList.prototype.containsNode = function (obj) {

if (this == null) return false;

var node = list.head;

if (node == null) return false;

while (node != null) {

if (node.data == obj) {

return true;

}

node = node.next;

}

};

实战调用用例代码陆续更新:

复制代码 代码如下:

<script type="text/javascript">

var linkedList = new Dare.LinkedList();

function createList() {

for (var i = 0; i < 7; i++) {

var movie = {};

var linkedListNode = new Dare.LinkedListNode();

movie.id = i;

movie.name = 'movie_' + i;

linkedListNode.data = movie;

linkedList.appendNode(linkedListNode); //创建链表

}

//deleteNode(linkedList);//删除节点

//printList(linkedList); //输出链表

printNode(linkedList);

}

function printList(list) {

var node = list.head;

if (node == null) return;

var html = '';

while (node != null) {

var movie = node.data;

html += movie.id + "|" + movie.name + "<br>";

node = node.next;

}

document.write(html);

}

function deleteNode(list) {

var node = list.head;

if (node == null) return;

var i = 0;

while (node != null) {

if (i == 3) {

linkedList.moveNode(node); //删除指定节点

break;

}

i++;

node = node.next;

}

}

var printNode = function(list) {

var node = list.head;

if (node == null) return;

var i = 0;

while (node != null) {

if (i == 4) {

var movie = linkedList.getNodeData(node); //打印指定节点

document.writeln(movie.id + "<br>");

document.writeln(movie.name + "<br>");

break;

}

i++;

node = node.next;

}

}

</script>

推荐文章
猜你喜欢
附近的人在看
推荐阅读
拓展阅读
相关阅读
网友关注
最新Javascript教程学习
热门Javascript教程学习
编程开发子分类