资源描述:
《javascript使用指针操作实现约瑟夫问题实例》由会员上传分享,免费在线阅读,更多相关内容在工程资料-天天文库。
1、JavaScript使用指针操作实现约瑟夫问题实例实现之前当然要自己来编写一些JS数组内部指针的操reset(),current(),next(),prev(),search(),end()这些函数,我们都要来自己实现,因为JS没有内置这些神奇的操作函数Array,prototype.pointer=0;//模拟数组内部指针//Reset函数,将数组内部指针归位(指向第一个元素)varreset=funotion(arrayObj){if(!(arrayObjinstanceofArray)){alert("
2、Reset()函数参数类型错误!请检查输入!〃);return;arrayObj・pointer=0;}//Current函数,返回数组内部指针指向的当前元素varcurrent=function(arrayObj){if(!(arrayObjinstanceofArray)){请检查输入!alert(〃Current()函数参数类型错误!〃);return;returnarrayObj[arrayObj・pointer];//End函数,将数组内部指针指向最后一个元素varend=function(arra
3、yObj){if(!(arrayObjinstanceofArray)){alert(〃End()函数参数类型错误!请检查输入!〃);return;arrayObj.pointer=arrayObj.length—l;returnarrayObj[arrayObj.pointer];}//Next函数,将数组内部指针下移一位//如果已经指向最后一个元素则返回FALSEvarnext二function(arrayObj){if(!(arrayObjinstanceofArray)){alert("Next()函
4、数参数类型错误请检查输入!〃);return;arrayObj.pointer++;if(typeofarrayObj[arrayObj.pointeundefined,){arrayObj.pointerreturnfalse;returntrue;}//Prev函数,将数组内部指针上移一位〃如果已经指向第一个元素则返回FALSEvarprev=function(arrayObj){if(!(arrayObjinstanceofArray)){alert(〃Prev()函数参数类型错误!请检查输入!retu
5、rn;}arrayObj・pointer一;if(typeofarrayObj[arrayObj.pointer]==,undefined'){arrayObj・pointer++;returnfalse;}returnarrayObj[arrayObj.pointer];}//Unset函数,删除指定的数组元素varunset=function(index,arrayObj){if(!(arrayObjinstanceofArray)){alert(Z/Unset()函数参数类型错误!请检查输入!〃);re
6、turn;}if(typeofarrayObj[index]二二'undefined'){alert("Unset()函数参数index错误!不存在此元素!〃);returnfalse;}arrayObj・splice(index,1);returntrue;}//Search函数,通过数组键值返回数组的键名varsearch=function(value,arrayObj){if(!(arrayObjinstanceofArray)){alert("Search()函数参数类型错误!请检查输入!”);ret
7、urn;}for(indexinarrayObj){if(arrayObj[index]==value){returnindex;returnfalse;//getKingMonkey函数,我们的约瑟夫主函数,n只猴子,数到mfunctiongetKingMonkey(n,m){a=newArray();for(i=l;ilt;=n;i++){a[i]=i;}a[0]=0;unset(0,a);reset(a);while(a.lengthgt;1){for(counter=l;counterlt;=m;co
8、unter++){if(next(a)){if(counter==m){unset(search(prev(a),a),a);}}else{reset(a);if(counter==m){unset(search(end(a),a),a);reset(a);returncurrent(a);alert(〃猴子大王的编号为:〃+getKingMonkey(100,