資料結構 佇列

2021-09-26 09:17:02 字數 2658 閱讀 4510

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...