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

首頁 > 編程 > JavaScript > 正文

JavaScript隊列的應用實例詳解【經典數據結構】

2019-11-19 16:51:22
字體:
來源:轉載
供稿:網友

本文實例講述了JavaScript隊列的應用。分享給大家供大家參考,具體如下:

和前面介紹的棧相反,隊列是一種先進先出的線性表,它只允許在表的一端進行插入,而在另一端進行刪除。JavaScript自己提供了兩個隊列方法shiftpush方法,分別是出隊入隊,其原理就是將元素插入數組最后一個和刪除第一個元素

這里需要注意一點,就是unshift方法的效率比push的效率要低很多。因為它要將入隊之前的數組全部往前移動一位。這里我們就不用代碼再次演示了。

和線性表類似,隊列也分為順序隊列鏈隊列

和順序棧類似,在隊列的順序存儲結構中,除了使用一組地址連續的存儲單元依次存放從隊列頭到隊列尾的元素之外,還要設置兩個指針frontrear分別指向隊列頭元素隊列尾元素。初始化時,front=rear=0;插入元素時,rear+1;刪除元素時,front+1。所以在非空隊列中,頭指針始終指向隊列頭元素,而尾指針始終指向隊列尾元素的下一個位置

隊列的應用有哪些呢?

我們先看看計算機組成層面的吧,首先就是CPU資源的競爭問題。在具有多個終端的計算機系統中,有多個用戶需要使用CPU來各自運行程序,操作系統會按照每個請求在時間上的順序,加請求排成一個隊列。每次把CPU分配給隊頭的任務,完成后使其出隊,然后依次。

第二個例子就是主機與外部設備之間速度不匹配的問題。我們以打印機和主機為例。主機輸出數據給打印機打印,主機輸出數據的速度遠大于打印機打印速度,所以有一個打印數據緩沖區,主要把數據依次寫入緩沖區,寫滿后主機就暫停輸出,繼而去做其他時間,只到打印機完成打印,再次請求主機發送數據,主機才繼續輸出數據。這樣利用隊列可以提高主機的效率。

我在這里挑一個常見的軟件層面的例子,也就是銀行排隊問題。先說說實現思路,第一個客戶到達的時刻為0,之后每個客戶到達的時刻在前一個客戶到達時設定隨機值,因此在客戶到達時需要產生兩個隨機數,一個是客戶辦理業務耗時durtime,一個是下一客戶到達時間間隔intertime,假設當前時間為occurtime,則下一客戶到達時為occurtime+intertime。

剛到達的客戶應該插入到當前含元素最少的隊列中。

在JavaScript的運用中,通常使用隊列來進行任務的排序。而任務隊列的任務是按進入隊列的順序延遲執行(解決狀態一致性)的,即當前一個任務完成后,后面的任務才被執行,如果當前沒有任務,則入隊列的任務立即執行。代碼如下:

<!DOCTYPE html><html> <head>  <meta charset="utf-8">  <title>隊列</title> </head> <body><script type="text/javascript"> function taskQueue() {  taskList = [];  var isRun = false;  this.addTask = function (task) {  taskList.push(task);  };  setInterval(function () {  if (taskList.length > 0 && !isRun) {   isRun = true;   taskList.shift();   isRun = false;  }  }, 100); } function show(){  alert(taskList); }  taskQueue();  addTask(1);  addTask(2);  addTask(3);  setTimeout('show()',99);//1,2,3  setTimeout('show()',101);//2,3  setTimeout('show()',400);//null</script> </body></html>

更多關于JavaScript相關內容感興趣的讀者可查看本站專題:《JavaScript數據結構與算法技巧總結》、《JavaScript數學運算用法總結》、《JavaScript排序算法總結》、《JavaScript遍歷算法與技巧總結》、《JavaScript查找算法技巧總結》及《JavaScript錯誤與調試技巧總結

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

發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表
主站蜘蛛池模板: 保定市| 富锦市| 唐海县| 民权县| 蒙山县| 乃东县| 东城区| 克东县| 蕲春县| 习水县| 石楼县| 阿图什市| 肥西县| 岳普湖县| 图木舒克市| 招远市| 嘉鱼县| 安新县| 苍溪县| 修武县| 突泉县| 临朐县| 永善县| 盘锦市| 汝城县| 兴安盟| 潜山县| 日土县| 高清| 长治市| 河津市| 都安| 秦安县| 六盘水市| 民勤县| 垣曲县| 子洲县| 遵化市| 贵定县| 湄潭县| 林州市|