国产探花免费观看_亚洲丰满少妇自慰呻吟_97日韩有码在线_资源在线日韩欧美_一区二区精品毛片,辰东完美世界有声小说,欢乐颂第一季,yy玄幻小说排行榜完本

首頁 > 編程 > JavaScript > 正文

JavaScript使用指針操作實現約瑟夫問題實例

2019-11-20 12:44:45
字體:
來源:轉載
供稿:網友

本文實例講述了JavaScript使用指針操作實現約瑟夫問題的方法。分享給大家供大家參考。具體分析如下:

實現之前當然要自己來編寫一些 JS 數組內部指針的操作函數,就像:reset(), current(), next(), prev(), search(), end() 這些函數,我們都要來自己實現,因為 JS 沒有內置這些神奇的操作函數

Array.prototype.pointer = 0;//模擬數組內部指針//Reset 函數,將數組內部指針歸位(指向第一個元素)var reset = function(arrayObj){  if(!(arrayObj instanceof Array)){    alert("Reset() 函數參數類型錯誤!請檢查輸入!");    return;  }  arrayObj.pointer = 0;}//Current 函數,返回數組內部指針指向的當前元素var current = function(arrayObj){  if(!(arrayObj instanceof Array)){    alert("Current() 函數參數類型錯誤!請檢查輸入!");    return;  }  return arrayObj[arrayObj.pointer];}//End 函數,將數組內部指針指向最后一個元素var end = function(arrayObj){  if(!(arrayObj instanceof Array)){    alert("End() 函數參數類型錯誤!請檢查輸入!");    return;  }  arrayObj.pointer = arrayObj.length - 1;  return arrayObj[arrayObj.pointer];}//Next 函數,將數組內部指針下移一位//如果已經指向最后一個元素則返回 FALSEvar next = function(arrayObj){  if(!(arrayObj instanceof Array)){    alert("Next() 函數參數類型錯誤!請檢查輸入!");    return;  }  arrayObj.pointer ++;  if(typeof arrayObj[arrayObj.pointer] == 'undefined'){    arrayObj.pointer --;    return false;  }  return true;}//Prev 函數,將數組內部指針上移一位//如果已經指向第一個元素則返回 FALSEvar prev = function(arrayObj){  if(!(arrayObj instanceof Array)){    alert("Prev() 函數參數類型錯誤!請檢查輸入!");    return;  }  arrayObj.pointer --;  if(typeof arrayObj[arrayObj.pointer] == 'undefined'){    arrayObj.pointer ++;    return false;  }  return arrayObj[arrayObj.pointer];}//Unset 函數,刪除指定的數組元素var unset = function(index, arrayObj){  if(!(arrayObj instanceof Array)){    alert("Unset() 函數參數類型錯誤!請檢查輸入!");    return;  }  if(typeof arrayObj[index] == 'undefined'){    alert("Unset() 函數參數 index 錯誤!不存在此元素!");    return false;  }  arrayObj.splice(index, 1);  return true;}//Search 函數,通過數組鍵值返回數組的鍵名var search = function(value, arrayObj){  if(!(arrayObj instanceof Array)){    alert("Search() 函數參數類型錯誤!請檢查輸入!");    return;  }  for(index in arrayObj){    if(arrayObj[index] == value){      return index;    }  }  return false;}//getKingMonkey 函數,我們的約瑟夫主函數,n 只猴子,數到 mfunction getKingMonkey(n, m){  a = new Array();  for(i = 1; i <= n; i ++){    a[i] = i;  }  a[0] = 0;unset(0, a);reset(a);  while(a.length > 1){    for(counter = 1; counter <= m; counter ++){      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);        }      }    }  }  return current(a);}alert("猴子大王的編號為:" + getKingMonkey(100, 17));

希望本文所述對大家的javascript程序設計有所幫助。

發(fā)表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發(fā)表
主站蜘蛛池模板: 分宜县| 鄢陵县| 沧州市| 航空| 穆棱市| 浮梁县| 奈曼旗| 江孜县| 安阳市| 芦溪县| 信丰县| 小金县| 新干县| 利津县| 合山市| 嘉禾县| 沾化县| 东至县| 逊克县| 漠河县| 阳山县| 通城县| 万载县| 托里县| 得荣县| 衢州市| 琼中| 阿坝县| 乐业县| 金平| 西乌珠穆沁旗| 大悟县| 芜湖县| 康平县| 靖宇县| 塘沽区| 安陆市| 清苑县| 蕲春县| 烟台市| 三门县|