class queue
enqueue(data)
dequeue()
head()
tail()
size()
clear()
isempty()
}
(1).約瑟夫環
思路:每隔兩個刪乙個,那就是個數%3餘數為0的話出佇列,否則出隊然**隊,即對頭變隊尾,直到剩下最後乙個
// 約瑟夫環 [100 個數每隔兩個刪乙個, 刪到末尾繼續從頭開始, 求最後乙個被刪除的數是多少?]
function delring (ringarrs) )
let index = 0
while (queue.size() > 1)
}return queue.head()
}let ringarrs = [0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10]
let lastone = delring(ringarrs)
console.log(lastone)
(2).斐波那契數列:1、1、2、3、5、8、13、21、34、……
函式實現:
思路:遞迴,前兩個數為1, 其他f(n) = f(n-1) + f(n-2)
function fibonacci (n , ac1 = 1 , ac2 = 1) ;
return fibonacci (n - 1, ac2, ac1 + ac2);
}
佇列實現:
思路:前兩個數為1, 其他:首先將前兩個數1,1入隊,然後迴圈(索引小於n - 2, 因為預設比2大),佇列始終有兩個數,隊頭加隊尾再入隊操作,最後迴圈完,返回隊尾就可
function fibonacci(n)
return queue.tail()
}
(3). 兩個佇列實現乙個棧:
思路:兩個指標,dataqueue始終指向有資料的佇列,emptyqueue指向空佇列。此時top棧頂就是資料佇列的隊尾;
push就是資料佇列的入隊;pop資料佇列出隊到空佇列,直到資料佇列的長度是1,此時資料佇列隊尾出隊即可
// 兩個佇列實現乙個棧
class queuetostack
/*** 初始化佇列,初始化資料佇列和空佇列的指向
*/initqueue () else
}pop ()
// 資料棧dataquee隊尾出隊
return this.dataquee.dequeue()
}push (data)
top ()
}let queuetostack = new queuetostack()
queuetostack.push(1)
queuetostack.push(2)
queuetostack.push(3)
queuetostack.push(4)
queuetostack.pop()
queuetostack.pop()
console.log(queuetostack.top())
(4).思考兩個棧如何實現乙個佇列?
思路:根據兩個佇列實現乙個棧
// 兩個棧實現乙個佇列
class stacktoqueue
/*** 初始化棧指向
*/initstack () else
}enqueue (data)
dequeue()
// 2. 迴圈完畢後, 資料棧只剩棧底,其實就是對頭,出棧即可, 1出棧
let popitem = this.datastack.pop()
// 3. 恢復資料棧,目的是 棧從 3, 2 -> 恢復到 2, 3
while (this.emptystack.size())
return popitem
}head()
// 2.此時空棧有資料 3 ,2, 1, 返回棧頂1即可
let topitem = this.emptystack.top()
// 3. 恢復資料棧,目的是 棧從 3, 2, 1 -> 恢復到 1, 2, 3
while (this.emptystack.size())
return topitem
}tail()
}let queuetostack = new stacktoqueue()
queuetostack.enqueue(1)
queuetostack.enqueue(2)
queuetostack.enqueue(3)
queuetostack.enqueue(4)
queuetostack.dequeue()
queuetostack.dequeue()
console.log(queuetostack.head())
console.log(queuetostack.tail())
資料結構 佇列
一 佇列的迴圈陣列實現。1 初始化 空佇列。令rear front 0。2 入佇列 約定rear指向佇列尾元素的下乙個位置。入佇列時,先判斷佇列是否已滿,而後將array rear x 然後rear 3 出佇列 約定front指向佇列的首元素位置。出佇列時,先判斷佇列是否為空,而後返回隊首元素re ...
資料結構 佇列
資料參考自 資料結構c 語言描述 佇列是一種先進先出的資料結構,這與棧正好相反。下例是簡單的queue實現 queue.h檔案 ifndef queue h define queue h include include 資料元素結構 自定義 struct datatype 佇列元素最大數 const...
資料結構 佇列
code for fun created by dream whui 2015 1 25 include stdafx.h include include using namespace std define true 1 define false 0 define ok 1 define erro...