棧,是一種比較高效的資料結構,遵循 先入後出(lifo,last-in-first-out) 的原則。佇列,它也是一種特殊的列表,它與棧不同的是, 佇列只能在隊尾插入元素,在隊首刪除元素,遵循 先進先出(fifo,first-in-first-out) 的原則,也是計算機常用的一種資料結構。
同棧有點類似,佇列的操作主要也是有兩種:向佇列中插入新元素和刪除佇列中的元素,即入隊和出隊操作,我們採用
//封裝佇列
function
queue()
queue.prototype=
,//出隊
dequeue:
function()
,//檢視隊首元素
front:
function()
,//檢視佇列是否為空
isempty:
function()
,//檢視佇列元素個數size
size:
function()
,//tostring
tostring:
function()
return q
}}var queue =
newqueue()
queue.
enqueue
('abc'
) queue.
enqueue
('1'
) queue.
enqueue
('2'
) console.
log(queue.
size()
); console.
log(queue.
front()
) console.
log(queue.
dequeue()
)
思路:新建乙個佇列,將所有人的名字放進佇列中,從0開始,將num-1之前的名字從佇列中刪除後依次新增到佇列中,刪除第num-1個名字,一直迴圈知道佇列中剩下乙個元素,即佇列長度為1時停止,列印這個元素,並列印元素在所有元素中的位置。
//擊鼓傳花
function
passgame
(namelist,num)
//數數字:刪除num-1這個元素,把num-1之前的元素從佇列中刪除後加到隊尾,再次從0開始數,依次迴圈
while
(q.size()
>1)
//將第num-1這個人從佇列中刪除
q.dequeue()
}//列印出最後剩下的人在陣列中的位置
console.
log(q.
front()
) console.
log(namelist.
indexof
(q.front()
));}
passgame([
'小明'
,'小紅'
,'消化'
,'xh'
,'中'
,'hh'
,'dg'
,'ss'
,'ii'
,'gg'],
3)
思路:在傳資料到佇列時傳入兩個引數,乙個是資料,乙個是優先順序,當隊列為空時直接插入,否則,將資料的優先順序與佇列中資料的優先順序進行比較後利用陣列方法splice(i,0,elment)將資料傳入到陣列中。 基於陣列實現佇列結構
package com.hand.deque 基於陣列實現的一次性佇列 public class arrayqueue 佇列是否已滿 return public boolean isfull 佇列是否為空 return public boolean isempty 向佇列中新增元素 param n ...
JS資料結構與演算法之佇列 基於陣列
function queue 移除並返回佇列第乙個元素 queue.prototype.dequeue 返回佇列中第乙個元素,不做任何修改 queue.prototype.front 返回佇列最後乙個元素,不做任何修改 queue.prototype.end 佇列是否為空 queue.prototy...
基於陣列的佇列操作
判斷佇列是否為空條件 頭和尾相等 判斷佇列已滿條件 隊尾 1 佇列長度 隊頭 include define maxsize 5 int queue maxsize int head 0 int tail 0 void enqueue int t 進佇列,首先判斷佇列是否已滿 else void de...