2017-09-06 4 views
0

私はこのコードがどのように動作するかを理解しようとしていますが、特にすべてのものがどのようにリンクされているかについて、どのように考えているのか混乱しています。ここでこのリンクされたキューコードはどのように機能しますか? - Python

は、私はそれについて考えている方法は次のとおりです。

キュー(Q)は、我々はQ = [self._head =なし、self._tail =なし、サイズ= 0](ないのpythonコードを持って初期化されるとき最初の要素がエンキューされると、ノードN1 =(e1、None)が作成され、それはself._headとself._tailに割り当てられ、self._tailおよびQ = [(e1、None)はデータ属性を整理する視覚的な方法です。 )、(e1、None)、1]。

2番目の要素がキューにエンキューされると、2番目のノードN2 =(e2、None)を作成し、QをQ = [(e1、None)、(e1)に更新するself._tail._next = 、N2)、1]。次に、コードはself._tail = newestをもち、QをQ = [(e1、None)、(e2、None)、2]に更新する。

ここには実際に何もリンクしていないようです。私はこのコードを理解する上で、ここでは何が欠けていますか?

答えて

1

キューには少なくとも2つのポイントがあります.1つはヘッドに、もう1つはテールになります。これにより、追加された順序でノードを反復処理し、新しいノードをキューの最後に追加することができます。

Head -> <- Tail 

がキューに1追加:

Head -> 1 <- Tail 

がキューに2追加:

Head -> 1 
      2 <- Tail 

をキューに3を追加するように我々は、空のキューを可視化することができます。

Head -> 1 
      2 
      3 <- Tail 

要素をデキューするとは、Headを次の要素に移動し、古い値を返すことを意味します。

  1 <- first_element 

    Head -> 2 
      3 <- Tail 

あなたはそれを見てしたい場合、私はfairly basic Queue implementationを持っています。

関連する問題