10強データ構造キュー
キューはFIFOルールのシーケンスデータ構造です.
Enqueueはスタックのappendに対応する挿入で、一番外側です.
dequeueはスタックpopに相当する削除を使用して最も奥の内容を除去する.
stackはポニーテール、queueは動物なら便利です.
stackは一番上に注意するだけで、queueは一番奥と外の2つのインデックスを知る必要があります.
front-index, rear
class Queue:
def __init__(self): 생성자
self.items = [] # 빈 리스트
self.front-index = 0
def enqueue(self, value):
self.items.append(val)
def dequeue(self):
if self.front-index == len(self.items):
print("Q is empty")
return None
else:
X = self.items[front-index]
self.front-index += 1
return X
dequeueではels:items[front-index]の値を実際に削除するのではなく、front-indexの値を削除したように動作させる.front-indexがlenに等しいまで増加すると、すべて削除されるので、Q is emptyが出力される.
Josephus問題があり,n人がいるとK人ごとに除外される.
これもqueueで解くと、1、2はdequeue、enqueueで最後に貼り直し、3はdequeueだけで値を落とす.
後ろの数字もこのように繰り返し、3番目の数字を1つ増やすたびに、新しい数字を追加しないと正常に動作します.
Reference
この問題について(10強データ構造キュー), 我々は、より多くの情報をここで見つけました https://velog.io/@chss3339/10강-자료구조-큐Queueテキストは自由に共有またはコピーできます。ただし、このドキュメントのURLは参考URLとして残しておいてください。
Collection and Share based on the CC Protocol