- キューを定義するための基礎
キュー:データセットの順序の一種。その特徴は、常に、常に、もう一方の端(ヘッドエンド手前)で行わエンド(リア)で行われ、既存のデータ項目を削除し、新たなデータ項目を追加しているFIFOを。
キュー唯一の入り口、出口1。データがキューイングされている場合、まずそれが徐々に近づく最初のチームに、最初のデータ項目の除去と、尻尾に登場します。直接チームに許容項目は、中間体から項目を削除することはできない(アソシエーション等パイプラインに流れることができます)
- 抽象データ型を入力キュー-python
キュー() | 空のキューオブジェクト、戻り値キューオブジェクトを作成します。 |
エンキュー(アイテム) | テールデータ項目に項目を追加し、戻り値なし |
デキュー() | 最初のデータ項目は、キューが変更されたチームは、最初のチームの戻り値のデータ項目から削除されます |
isEmpty() | キューは、bool型の戻り値は空であるかどうかをテストするには |
サイズ() | キュー内のデータ項目の数を返します。 |
カスタムキューとPythonの:
1 クラスキュー: 2 DEF __init__ (自己): 3 self.items = [] 4 5 デフのisEmpty(自己): 6 リターン self.items == [] 7 8 DEFエンキュー(自己、項目): #复杂度O( N) 9 self.items.insert(0アイテム) 10 11 DEFデキュー(自己): #复杂度O(1) 12 リターンself.items.pop() 13 14 デフサイズ(自己): 15 リターンlenの(自己.items) 16Q = キュー() 17 Q.enqueue(0) 18 Q.enqueue(1 ) 19 Q.enqueue(' ' ) 20 プリント(Q.size())
[OUT] 3つの 終了コードで終了プロセス0
- キューアプリケーション
- ホットポテト問題(ジョセフ問題)
問題の説明:ホットホットポテトパス、ドラム停止、ラインのうち、子供のジャガイモのニーズの手。(私は一緒にちょうどタイピング、およびダイレクトショットのPPTにしたくありません)
分析:達成するために使用するキュー。キューを格納するために使用した後、すべての名前は、ゲームに参加、チームの最初のデフォルトはポテト所有され、ゲームが始まった、ライン人のうちの最初のチーム、そしてその後すぐに転送ジャガイモ、合格をnum回として記録チームへの尾、に、人々の最初のチームは、キューの中のたった一人になるまで、等々削除され、もはやチームに、そしてされています。
コード:
1 から QUEUE1のインポートキュー 2 3 DEF :hotPotato(ネームリスト、NUM) 4 simqueue = キュー() 5 6 ための名前でネームリスト: 7 simqueue.enqueue(名) 8 9 ながら simqueue.size()> 1 : 10 のための私に範囲(NUM): 11 simqueue.enqueue(simqueue.dequeue()) #一次传递 12 13 simqueue.dequeue() 14 戻りsimqueue.dequeue() 15 プリント(hotPotato([ ' '、' B '、' C '、' D '、' E '、' F '、' G ' ]、7))
Dの
プロセスは、終了コードを終了0