javascript代码实例教程-Javascript数据结构算法之链表(约瑟夫环)

发布时间:2019-01-13 发布网站:脚本宝典
脚本宝典收集整理的这篇文章主要介绍了javascript代码实例教程-Javascript数据结构算法之链表(约瑟夫环)脚本宝典觉得挺不错的,现在分享给大家,也给大家做个参考。
小宝典致力于为广大程序猿(媛)提供高品质的代码服务,请大家多多光顾小站,小宝典在此谢过。

Javascript数据结构算法之链表(约瑟夫环)。在很多编程语言中,数组的长度是固定的;在数组中添加和删除元素很麻烦。而Javascript数组并不存在上述问题,因为Javascript中,数组被实现为对象,而且拥有自己的一系列方法,例如push(),shift(),splice()。然而,Javascript中,数组的主要问题也是被实现成对象导致的效率低下。

链表是由一组节点组成,每个节点除了包括一个数据,还包括使用一个对象的引用指向它的后继。指向另一个节点的引用叫做链。链表最前面有一个特殊的节点,叫做头节点。链表最后的节点指向一个null节点。遍历链表,就是跟着链,从链表的首元素走到尾元素。

链表的JS实现 解决实际问题

链表的JS实现

链表包含两个类。Node类用来表示节点。LList类提供了插入节点,删除节点,查找节点,显示链表元素等辅助方法。

//llist.js

//Node对象定义

function Node(element){

this.element = element;

this.next = null;

}

//LList对象定义

function LList(){

this.head = new Node("head");

this.find = find;

this.insert = insert;

this.remove = remove;

this.findPrevious = findPRevious;

this.display = display;

}

function find(ITem){

VAR currNode = this.head;

while(currNode.element != item)

{

currNode = currNode.next;

}

return currNode;

}

function insert(element, item){

var newNode = new Node(element);

var current = this.find(item);

newNode.next = current.next;

current.next = newNode;

}

function findPrevious(item){

var current = this.head;

while(current.next.element != item && current.next != null)

{

current = current.next;

}

return current;

}

function remove(item){

var prevNode = this.findPrevious(item);

if(prevNode.next != null)

prevNode.next = prevNode.next.next;

}

function display(){

var str = "";

var current = this.head;

while(current.next != null)

{

str += current.next.element + "/n";

current = current.next;

}

return str;

}

//实例化一个链表

var oneLList = new LList();

链表的实际应用

问题描述:传说在公元1 世纪的犹太战争中,犹太历史学家弗拉维奥·约瑟夫斯和他的40 个同胞被罗马士兵包围。犹太士兵决定宁可自杀也不做俘虏,于是商量出了一个自杀方案。他们围成一个圈,从一个人开始,数到第三个人时将第三个人杀死,然后再数,直到杀光所有人。约瑟夫和另外一个人决定不参加这个疯狂的游戏,他们快速地计算出了两个位置,站在那里得以幸存。请问哪两个位置?

(一)网页展示

 

@H_724_126@

javascript代码实例教程-Javascript数据结构算法之链表(约瑟夫环)

 

(二)htML代码

约瑟夫环

(三)Javascript方法

循环链表和单向链表相似,节点类型都是一样的。唯一的区别是,在创建循环链表时,让其头节点指向本身:head.next = head。这样便形成了循环链表。

//circleList.js

//直接构建1-41编号的循环链表,无需定义插入和删除操作。

function Node(element){

this.element = element;

this.next = null;

}

function LList(num){

var head = new Node(1);

var p = head;

for(var i=2; i<=num; i++)

{

var temp = new Node(i);

p.next = temp;

p = temp;

}

p.next = head;

return head;

}

var cirLinkList = new LList(41);

function getKilled(){

var current = cirLinkList;

var str = "";

while(current.next.element != current.element)

{

for(var i=1; i<3; i++)

{

var temp = current;

current = current.next;

}

//删除节点的本质即改变其前一个元素的后继

temp.next = current.next;

str += current.element + " ";

current = temp.next;

}

str += current.element;

//将杀人顺序显示在网页上

var dresult = document.getElementById("dying_PEople");

dresult.innerHTML = str;

}

觉得可用,就经常来吧! 脚本宝典 欢迎评论哦! js脚本,巧夺天工,精雕玉琢。小宝典献丑了!

脚本宝典总结

以上是脚本宝典为你收集整理的javascript代码实例教程-Javascript数据结构算法之链表(约瑟夫环)全部内容,希望文章能够帮你解决javascript代码实例教程-Javascript数据结构算法之链表(约瑟夫环)所遇到的问题。

如果觉得脚本宝典网站内容还不错,欢迎将脚本宝典推荐好友。

本图文内容来源于网友网络收集整理提供,作为学习参考使用,版权属于原作者。
如您有任何意见或建议可联系处理。小编QQ:384754419,请注明来意。