2016-08-08 16 views
1

私は、コマンドプロンプトから入力を受け取るリンクリストのきれいなプリンタを持っています。 例えば、GDBのきれいなプリンタを使ってリンクされたリストをトラバースする

私のコードは以下のようなものであるXYZ印刷:期待どおりに作業を行い

class Randomcalss: 
    def __init__(self, val): 
     self.val = int(val) 

    def to_string(self): 
     return "printing linked list:" 

    def children(self): 
     for field in self.val.type.fields(): 
      key = field.name 
      val = self.val[key] 
      yield key,val.dereference() 

、および印刷物:

printing linked list:= {head = {next = 0x625590, prev = 0x623c70}} 

しかし、私はリンクリストを横断し、続行したい場合さらに私は何をしますか。 私はhead ['next']にアクセスしようとするたびにheadは文字列で、stringインデックスは整数でなければならないと言います。

私はself.val [key]のように頭の次のノードにもアクセスしますか?

+0

C++では、この 'p head-> next'のようなことができます。 –

+0

返信いただきありがとうございますが、GDBのきれいなプリンタでリンクリストをトラバースする方法が必要でした。 – Sharath

+0

コマンド 'set print pretty on'を使うことができます。その後、' print'や 'p'を使って何がwintであっても、かなりの形式になります。 –

答えて

2

val.dereference()['next']を実行すると、リストの次のメンバーのアドレスが表示されます。得られた値をキャストし(必要に応じて)、さらにトラバースすることができます。

+0

それは動作します!ありがとう:) – Sharath

関連する問題