データ構造とアルゴリズム(7) - キューキュー

  • キューを定義するための基礎

キュー:データセットの順序の一種。その特徴は、常に、常に、もう一方の端(ヘッドエンド手前)で行わエンド(リア)で行われ、既存のデータ項目を削除し、新たなデータ項目を追加している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
  • キューアプリケーション
  1. ホットポテト問題(ジョセフ問題)

問題の説明:ホットホットポテトパス、ドラム停止、ラインのうち、子供のジャガイモのニーズの手。(私は一緒にちょうどタイピング、およびダイレクトショットの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

参考:https://www.bilibili.com/video/BV1QJ411w7bB?p=23

おすすめ

転載: www.cnblogs.com/yeshengCqupt/p/12590555.html
おすすめ