注パイソン - アルゴリズムとデータ構造3

1つのリスト

    基本的なリストは、連続的に格納されていないデータとして配列表、共通のデータ構造であるが、各ノードと次のノードに格納された位置情報データ。

    リスト構造は、コンピュータのメモリ空間の柔軟な動的なメモリ管理を最大限に活用することができます。

2ウェイリンクリスト

    2.1ノード

    link要素ドメインとドメイン、リンクされたリスト内の次のノードへのリンク:各ノードは、2つの部分からなります。

最初のノードは、第1ノード、テール・ノードと呼ばれる最後のノードと呼ばれます。

nullにエンド・ノードのリンクフィールドポイントを。

3 pythonで特定された変数の性質

    アドレスポイントから異なるだけアドレスの維持にPythonの変数は、変数の型が異なるを表し、これは理由を変更することができ、Pythonの変数の一種です。

4単独リンクリストを達成

    4.1節を達成

    クラスSingleNode(オブジェクト):

        デフ__init __(自己、アイテム):

             self.item =アイテム

             self.next =なし

    4.2単独リンクリストを達成

    クラスSingleLindList(オブジェクト):

        デフ__init __(自己、ノード=なし):

             self._head =ノード

    単一リンクリスト方式の4.3デザイン

        このような加工ヘッドノードとテール・ノードとしてその異常な状況を、注意してください

        ループ終了条件、CUR!=なしとcur.next!=なしことに注意してください

違い表5の順序

    シーケンステーブルは、データは非常に便利ですが、店に連続したメモリを必要と読みます。

    あなたは、データにアクセスするためのリンクリストを横断する必要がありますが、ほかにも、アドレスデータがあるので、それに応じてデータを格納するための個別のメモリをより柔軟に使用することができるので、同じ量のデータは、リストには、より多くのストレージスペースを必要とします。

6リストの実装

  List実装プロセスは、いくつかの特別な場合のために、思いやりの必要性は空のリスト、最初のノード、エンドノードなどを含む、注意すべきです。

クラスノード(オブジェクト):
     デフ __init__ (自己、項目):
        self.item = 項目
        self.next = なし


クラスSingleTable(オブジェクト):
     デフ __init__(自ノード= なし):
        自己。__head = ノード

    デフis_empty(自己):
         戻り自己。__headが あるなし

    デフ:長さ(自己)
        CUR =自己。__head 
        、カウント = 0
         !CUR = :なし
            回数+ = 1 
            CUR = cur.nextの
         リターンカウント

    デフ(自己)旅行:
        CUR =自己を。__head 
        ながら CUR =!なし:
             プリント(cur.item)
            CUR = cur.nextは

    デフ追加(自己、アイテム):
        ノード = ノード(アイテム)
        node.next =自己。__head 
        自己。__head = ノード

    DEF :(自己、項目)追加
        ノード = ノード(アイテム)
         であれば(self.is_empty()):
            自己。__head = ノード
         
            CUR =自己。__head 
            ながら cur.next =!なし:
                CUR = cur.next 
            cur.next = ノードが

    DEF 挿入(自己、POS、項目):
        ノード = ノード(アイテム)
         であれば(POS <= 0):
            self.add(アイテム)
        のelif(POS> self.length() - 1 ):
            self.append(アイテム)
        #1 CUR =自己.__ヘッド 
            PREV =自己。__head 
            カウント =0
             ながらカウント<POS-1 
                カウント + = 1 
                PREV = prev.next 
            node.next = prev.next 
            prev.next = ノード

    DEF (自己、項目)を削除:
        CUR =自己。__head  = なし
         の場合(self.is_emptyは()):
             渡す
        もし(自己__head .item == アイテム):
                セルフ。__head = cur.next
             しばらく cur.item =!アイテム: = CUR 
                    CUR = cur.next 
                pre.next = cur.next 

    DEF :(自己、アイテム)を検索
        CUR =自己を。__head 
        場合(self.is_empty()):
             返すFalseの
         しばらく CUR =!なし:
                 場合(cur.item == アイテムは):
                     返す真の
                 
                    CUR =cur.next
             返す


なら __name__ == ' __main__ ' 
    LL = SingleTable()
    ll.append( 1 
    ll.append( 2 
    ll.append( 5 
    ll.append( 12 印刷(ll.length())
    ll.travel()
    ll.insert( 2,20 
    ll.travel()
    ll.remove( 1 
    ll.travel()

 

おすすめ

転載: www.cnblogs.com/zhuome/p/11432853.html