キュー
1.定義:いずれかを可能にする線形制限キューテーブルインサートと両端の削除操作は、と呼ばれ、許可されている操作、削除、「尾部」という操作に終了する「頭部の」を
2.特徴:
- キューの中のデータ操作はヘッドおよびキューテールをキューに入れることができます
- 法律FIFOスタックモデルまたは最後に挙げたの後部
3.キューコードの実装
そこ操作キューのエンキュー、デキュー、フル空のキュー操作など決意。
。1 「」 " 2 格納するキューsqueue.py 3つの キーコード 4。 5つの。 アイデア分析: 6 の完全なリスト記憶構造に基づい1. 7 2.パッケージの所定の操作キューのヘッドとテールキュー 8 『』 ' 。9 10 # カスタムキュー例外 11。 クラスQueueError(例外): 12は パス 13である 14 15 #キュー操作クラス 16 、クラスのsqueue: 17 DEF __init__ (自己): 18である self._elems = [] 。19 20である #空きキュー分析 21である DEFのis_empty(自己): 22れます 戻り self._elemsを== [] 23は 24 #リストのエンキュー端 25 DEF エンキュー(セルフ、ELEM): 26れる self._elems.append(ELEM) 27 28 #は、リストの先頭からデキュー 29 DEFのデキュー(自己): 30 IF ませんself._elems: 31である レイズ QueueError(" 空のキューである" ) 32 リターンself._elems.pop(0) 33は、 34である 35 IF __name__は == " __main__ " : 36の 。SQ =SQUEUE() 37 sq.enqueue(10 ) 38 sq.enqueue(20 ) 39 sq.enqueue(30 ) 40 しばらく しないsq.is_empty(): 41 プリント(sq.dequeue())
1 「」 " 2つの lqueue.pyキューチェーン 3 キーコード 4。 5つの。 アイデア分析: 6 スタックリストに基づいて1完了チェーンモデル 7 リンクリストキューヘッドの先頭として2、尾部として尾翼 8 3.同様に頭と尾点空きキューとしてノード 9 「」 " 10 。11 # カスタム・キュー例外 12は クラス:QueueError(例外) 13は パス 14 15 #ノードクラスの 16 クラスノード: 17 DEF __init__(自己、データ、次に= なし): 18であり、 自己= .DATA データ 19 self.next = 次に 20であります 21 #鎖クラスキュー 22は、ある クラス:LQueue 23は DEF __init__ :(自己) 24 #議論の余地ノードへの初期のヘッドおよびテールポイント 25 self.rear self.front = = ノード(なし) 26である 27 DEFのis_empty(自己): 28 リターン self.front == self.rear 29 30 # テールアクチュエータに 31である DEF エンキュー(セルフ、ELEM): 32 self.rear.next = ノード(ELEM) 33である self.rear = self.rear.next 34は、 35 # 可動ヘッド 36 DEFデキュー(自己): 37 もし == self.front self.rear: 38 昇給 QueueError(" キューが空である" ) 39 self.front = self.front.next 40 戻りself.front.data 41 42 なら __name__ == " __main__ " : 43 LQ = LQueue() 44 lq.enqueue(10 ) 45 lq.enqueue(20 ) 46 lq.enqueue(30 ) 47の 印刷(lq.dequeue())